{
  "info": {
    "_postman_id": "1bd1595e-81b5-4cd1-89ea-a34ea73be5eb",
    "name": "Devkit endpoints",
    "description": "# Changes from Version 3 to Version 4\n\nVersion 4 of the Qriib-devkit API introduces major improvements in security, project management,add project limitations and overall request validation. Below is a summary of what has changed compared to **v4.**\n\nIn **v4**, authentication has been **fully upgraded** to a more secure model using:\n\n## **1.HMAC SHA256 Signatures**\n\nEvery request must now include:\n\n| Header | Description |\n| --- | --- |\n| `api-key` | Your Organization or Project API Key |\n| `secret-key` | Your Organization or Project Seret Key |\n| `hash-signature` | HMAC SHA256 signature of the request message (Base64-encoded) |\n\n### Signature Generation\n\nThe signature is generated from:\n\n- **GET/DELETE:** Request path + query\n    \n- **POST/PUT/PATCH:** Raw JSON body\n    \n- Secret Key (Organization or Project)\n    \n- API secret associated with the data is used to generate the HMAC SHA256 signature, which is then Base64-encoded and sent in the hash-signature header.\n    \n\n**Code example**\n\n``` python\nimport base64\nimport hmac, hashlib, requests, json\nimport base64\nimport hmac\nimport hashlib\nimport requests\nimport json\nfrom urllib.parse import urlparse\n# Function to generate HMAC SHA256 signature\ndef generate_signature(message, secret):\n    \"\"\"\n    Generate HMAC SHA256 signature.\n    Args:\n        message: String message to sign\n        secret: Secret key for HMAC\n    Returns:\n        Base64 encoded signature\n    \"\"\"\n    signature = hmac.new(\n        secret.encode('utf-8'),\n        message.encode('utf-8'),\n        hashlib.sha256\n    ).digest()\n    return base64.b64encode(signature).decode('utf-8')\n# Example usage of generating HMAC signature and making an authenticated request\n# use your actual api_key and api_secret here and test the request\napi_key = \"yourapikeyhere\" \napi_secret = \"yoursecretkeyhere\"\nbody = {\n    \"project_id\":\"yourprojectidhere\", # use your actual project id\n    \"name\":\"Test room\",\n    \"client_room_id\":\"room1reee2ssss3\",\n    \"moderator_id\":\"mod1\",\n    \"max_participants\":20,\n    \"empty_timeout\":300,\n    \"metadata\":{\n        \"room_title\":\"My room\",\n        \"welcome_message\":\"Welcome!\"\n    }\n}\nbody_json = json.dumps(body, separators=(\",\",\":\"))\ngenerated_signature = generate_signature(body_json, api_secret)\n\n ```\n\n## 2\\. Projects API (New in v4)\n\n- Projects managements apis\n    \n- Organization-Level Authentication for Projects\n    \n- Projects now include:\n    \n    - Usage limits",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "_exporter_id": "31693014",
    "_collection_link": "https://go.postman.co/collection/31693014-1bd1595e-81b5-4cd1-89ea-a34ea73be5eb?source=collection_link"
  },
  "item": [
    {
      "name": "Rooms",
      "item": [
        {
          "name": "create_quick_audio_room",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "let rawMessage;\r",
                  "\r",
                  "if (pm.request.method === \"GET\" || pm.request.method === \"DELETE\") {\r",
                  "    // Get the full path with query string\r",
                  "    rawMessage = pm.request.url.getPathWithQuery();\r",
                  "    \r",
                  "    // Resolve all {{variable}} patterns in the URL\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        // Try to get variable from different scopes\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match; // Keep original if not found\r",
                  "    });\r",
                  "} else {\r",
                  "    // Get raw body\r",
                  "    rawMessage = pm.request.body.raw;\r",
                  "    \r",
                  "    // Resolve variables in body too\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match;\r",
                  "    });\r",
                  "}\r",
                  "\r",
                  "// Normalize: replace CRLF with LF and trim\r",
                  "rawMessage = rawMessage.replace(/\\r\\n/g, '\\n').trim();\r",
                  "\r",
                  "console.log(\"Raw Message to be signed:\", rawMessage);\r",
                  "console.log(\"Message length:\", rawMessage.length);\r",
                  "\r",
                  "const secret = '1d047c9e-ede8-48ab-9958-c395777b2621';\r",
                  "\r",
                  "// Generate HMAC SHA256 and encode as Base64\r",
                  "const hash = CryptoJS.HmacSHA256(rawMessage, secret).toString(CryptoJS.enc.Base64);\r",
                  "\r",
                  "pm.request.headers.upsert({ key: \"hash-signature\", value: hash });\r",
                  "\r",
                  "console.log(\"Generated HMAC:\", hash);\r",
                  "console.log(\"Resolved message:\", rawMessage);\r",
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            },
            {
              "listen": "test",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "key",
                "value": "{{key}}",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "hash-signature",
                "value": "BBwypYy2vD++mSdYfCaGvH8KqhW+ze7lJA1eR4ZZuds=",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\r\n  \"project_id\": \"{{projectId}}\",\r\n  \"name\":\"ali\",\r\n  \"client_room_id\":\"ddds0a1cvfvcsic1[xpwc[b1fdfbvcbbbfdpmffe1v16vb1wd1\",\r\n  \"moderator_id\":\"ali\",\r\n  \"max_participants\":\"20\",\r\n  \"empty_timeout\":\"1000\",\r\n  \"metadata\": {\r\n    \"room_title\": \"yarab room\",\r\n    \"welcome_message\": \"Welcome to room\"\r\n  }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{V.cloud}}/api/v3/rooms/create_quick_audio_room",
              "host": [
                "{{V.cloud}}"
              ],
              "path": [
                "api",
                "v3",
                "rooms",
                "create_quick_audio_room"
              ]
            },
            "description": "**Endpoint:** `POST {{V.cloud}}/api/v4/rooms/create_quick_audio_room`\n\nThis endpoint creates a quick audio room within your project. It is designed for rapid setup of audio rooms with customizable metadata and participant controls.\n\n### Required Parameters (JSON Body)\n\n- `project_id` _(string)_: The unique identifier for your project. Must be provided as a variable (e.g., `{{projectId}}`).\n    \n- `name` _(string)_: The name of the room or session creator.\n    \n- `client_room_id` _(string)_: A unique client-side identifier for the room.\n    \n- `moderator_id` _(string)_: The user ID of the moderator for the room.\n    \n- `max_participants` _(string or integer)_: The maximum number of participants allowed in the room.\n    \n- `empty_timeout` _(string or integer)_: The time (in seconds) after which an empty room will be closed automatically cant exceed 2000.\n    \n- `metadata` _(object)_: Additional room information.\n    \n    - `room_title` _(string)_: The display title for the room.\n        \n    - `welcome_message` _(string)_: A message shown to users when they join the room.\n        \n\n### Authentication\n\nThis endpoint requires an HMAC SHA256 signature for authentication. The signature must be generated using the full request body (with all variables resolved) and a shared secret. The resulting Base64-encoded signature should be included in the `hash-signature` header.\n\n- **Header:** `hash-signature:`\n    \n- **Secret:** Provided by your API administrator or in your environment variables.\n    \n\n### Important Notes\n\n- All variables in double curly braces (e.g., `{{projectId}}`, `{{V.cloud}}`) must be resolved from your environment, collection, or global variables before sending the request.\n    \n- Ensure the request body is valid JSON and all required fields are present.\n    \n- If the signature is invalid or missing, the API will return a 401 Unauthorized error with the message `{\"error\":\"Invalid signature\"}`.\n    \n- The `key` header must also be set with your API key.\n    \n\n### Example Request Body\n\n``` json\n{\n  \"project_id\": \"{{projectId}}\",\n  \"name\": \"hisham\",\n  \"client_room_id\": \"daszc1s333xsw\",\n  \"moderator_id\": \"hisham\",\n  \"max_participants\": \"20\",\n  \"empty_timeout\": \"300\",\n  \"metadata\": {\n    \"room_title\": \"Test room\",\n    \"welcome_message\": \"Welcome to room\"\n  }\n}\n\n ```"
          },
          "response": [
            {
              "name": "room alread exists",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n  \"project_id\": \"{{projectId}}\",\r\n  \"name\":\"hisham\",\r\n  \"client_room_id\":\"daszc1sxsw\",\r\n  \"moderator_id\":\"hisham\",\r\n  \"max_participants\":\"20\",\r\n  \"empty_timeout\":\"300\",\r\n  \"metadata\": {\r\n    \"room_title\": \"Test room\",\r\n    \"welcome_message\": \"Welcome to room\"\r\n  }\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/rooms/create_quick_audio_room",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "rooms",
                    "create_quick_audio_room"
                  ]
                }
              },
              "status": "BAD REQUEST",
              "code": 400,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Date",
                  "value": "Thu, 13 Nov 2025 14:53:38 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "59"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000; includeSubDomains"
                }
              ],
              "cookie": [],
              "body": "{\n    \"message\": \"Client room ID already exists\",\n    \"status\": false\n}"
            },
            {
              "name": "created success",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n  \"project_id\": \"{{projectId}}\",\r\n  \"name\":\"hisham\",\r\n  \"client_room_id\":\"daszc1s333xsw\",\r\n  \"moderator_id\":\"hisham\",\r\n  \"max_participants\":\"20\",\r\n  \"empty_timeout\":\"300\",\r\n  \"metadata\": {\r\n    \"room_title\": \"Test room\",\r\n    \"welcome_message\": \"Welcome to room\"\r\n  }\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/rooms/create_quick_audio_room",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "rooms",
                    "create_quick_audio_room"
                  ]
                }
              },
              "status": "CREATED",
              "code": 201,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Date",
                  "value": "Thu, 13 Nov 2025 14:54:07 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "842"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000; includeSubDomains"
                }
              ],
              "cookie": [],
              "body": "{\n    \"final_link\": \"https://lk-vcloud-dev.dragonteam.dev/?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhY2Nlc3NfdG9rZW4iOiJleUpoYkdjaU9pSklVekkxTmlJc0luUjVjQ0k2SWtwWFZDSjkuZXlKbGVIQWlPakUzTmpNd05EWXlORGNzSW1selgyRmtiV2x1SWpwMGNuVmxMQ0pwYzNNaU9pSkJVRWwwTlZob1dYTnRlRFJLYkNJc0ltNWhiV1VpT2lKb2FYTm9ZVzBpTENKdVltWWlPakUzTmpNd05EVTJORGNzSW5KdmIyMWZhV1FpT2lJMU56TmpObUkwWmkxbU1UUmtMVFF6WWprdFlURTFaQzA1TURaalpXWXdORFF3TldZaUxDSnpkV0lpT2lJek1EZ3dZelV6Wmkxa04yUXpMVFEwTkdZdFlURTVPQzAwTWprd1lqZzVaV1ZrTXpBaUxDSjFjMlZ5WDJsa0lqb2lNekE0TUdNMU0yWXRaRGRrTXkwME5EUm1MV0V4T1RndE5ESTVNR0k0T1dWbFpETXdJbjAudlJfaldTcVpFWG5PLVp6QWZZVEN0SVYyQnhyWkY1SHprenNJc2xUTTl0MCIsInByb2plY3RfaWQiOiIzYzlmNTU0ZC1kYThkLTQ2NGEtODgxNi1iZjQ1YjhhYWQzZTAiLCJicmFuZGluZyI6e319.-RIGoxqHIC-8R-XO8PpshjoVinXhbLmD_oJqwS7hiXA\",\n    \"room_id\": \"573c6b4f-f14d-43b9-a15d-906cef04405f\",\n    \"status\": true\n}"
            },
            {
              "name": "invalid api key",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n  \"project_id\": \"{{projectId}}\",\r\n  \"name\":\"hisham\",\r\n  \"client_room_id\":\"daszc1s333xsw\",\r\n  \"moderator_id\":\"hisham\",\r\n  \"max_participants\":\"20\",\r\n  \"empty_timeout\":\"300\",\r\n  \"metadata\": {\r\n    \"room_title\": \"Test room\",\r\n    \"welcome_message\": \"Welcome to room\"\r\n  }\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/rooms/create_quick_audio_room",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "rooms",
                    "create_quick_audio_room"
                  ]
                }
              },
              "status": "UNAUTHORIZED",
              "code": 401,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Date",
                  "value": "Thu, 13 Nov 2025 14:54:32 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "39"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000; includeSubDomains"
                }
              ],
              "cookie": [],
              "body": "{\n    \"error\": \"Invalid or missing api_key\"\n}"
            },
            {
              "name": "invalid signature",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n  \"project_id\": \"{{projectId}}\",\r\n  \"name\":\"hisham\",\r\n  \"client_room_id\":\"daszc1s333xsw\",\r\n  \"moderator_id\":\"hisham\",\r\n  \"max_participants\":\"20\",\r\n  \"empty_timeout\":\"300\",\r\n  \"metadata\": {\r\n    \"room_title\": \"Test room\",\r\n    \"welcome_message\": \"Welcome to room\"\r\n  }\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/rooms/create_quick_audio_room",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "rooms",
                    "create_quick_audio_room"
                  ]
                }
              },
              "status": "UNAUTHORIZED",
              "code": 401,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Date",
                  "value": "Thu, 13 Nov 2025 14:55:35 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "30"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000; includeSubDomains"
                }
              ],
              "cookie": [],
              "body": "{\n    \"error\": \"Invalid signature\"\n}"
            },
            {
              "name": "Error 401 Unauthorized",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "key",
                    "value": "{{key}}"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\"project_id\":\"{{projectId}}\",\"name\":\"hisham\",\"client_room_id\":\"daszc1s333xsw\",\"moderator_id\":\"hisham\",\"max_participants\":\"20\",\"empty_timeout\":\"300\",\"metadata\":{\"room_title\":\"Test room\",\"welcome_message\":\"Welcome to room\"}}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/rooms/create_quick_audio_room",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "rooms",
                    "create_quick_audio_room"
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": "",
                  "enabled": true
                },
                {
                  "key": "key",
                  "value": "{{key}}",
                  "description": "",
                  "enabled": true
                }
              ],
              "cookie": [],
              "body": "{\"error\": \"Invalid signature\"}"
            },
            {
              "name": "Success 200 OK",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "key",
                    "value": "{{key}}"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\"project_id\":\"{{projectId}}\",\"name\":\"hisham\",\"client_room_id\":\"daszc1s333xsw\",\"moderator_id\":\"hisham\",\"max_participants\":\"20\",\"empty_timeout\":\"300\",\"metadata\":{\"room_title\":\"Test room\",\"welcome_message\":\"Welcome to room\"}}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/rooms/create_quick_audio_room",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "rooms",
                    "create_quick_audio_room"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": "",
                  "enabled": true
                },
                {
                  "key": "key",
                  "value": "{{key}}",
                  "description": "",
                  "enabled": true
                }
              ],
              "cookie": [],
              "body": "{\"room_id\": \"room123\", \"name\": \"hisham\", \"client_room_id\": \"daszc1s333xsw\", \"moderator_id\": \"hisham\", \"max_participants\": 20, \"empty_timeout\": 300, \"metadata\": {\"room_title\": \"Test room\", \"welcome_message\": \"Welcome to room\"}}"
            }
          ]
        },
        {
          "name": "create_quick_video_room",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "let rawMessage;",
                  "",
                  "if (pm.request.method === \"GET\" || pm.request.method === \"DELETE\") {",
                  "    // Get the full path with query string",
                  "    rawMessage = pm.request.url.getPathWithQuery();",
                  "    ",
                  "    // Resolve all {{variable}} patterns in the URL",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {",
                  "        // Try to get variable from different scopes",
                  "        return pm.collectionVariables.get(varName) || ",
                  "               pm.environment.get(varName) || ",
                  "               pm.globals.get(varName) || ",
                  "               pm.variables.get(varName) || ",
                  "               match; // Keep original if not found",
                  "    });",
                  "} else {",
                  "    // Get raw body",
                  "    rawMessage = pm.request.body.raw;",
                  "    ",
                  "    // Resolve variables in body too",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {",
                  "        return pm.collectionVariables.get(varName) || ",
                  "               pm.environment.get(varName) || ",
                  "               pm.globals.get(varName) || ",
                  "               pm.variables.get(varName) || ",
                  "               match;",
                  "    });",
                  "}",
                  "",
                  "// Normalize: replace CRLF with LF and trim",
                  "rawMessage = rawMessage.replace(/\\r\\n/g, '\\n').trim();",
                  "",
                  "console.log(\"Raw Message to be signed:\", rawMessage);",
                  "console.log(\"Message length:\", rawMessage.length);",
                  "",
                  "const secret = '46143c1e-2fae-47e9-b947-6cdae1038aac';",
                  "",
                  "// Generate HMAC SHA256 and encode as Base64",
                  "const hash = CryptoJS.HmacSHA256(rawMessage, secret).toString(CryptoJS.enc.Base64);",
                  "",
                  "pm.request.headers.upsert({ key: \"hash-signature\", value: hash });",
                  "",
                  "console.log(\"Generated HMAC:\", hash);",
                  "console.log(\"Resolved message:\", rawMessage);",
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            },
            {
              "listen": "test",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "key",
                "value": "{{key}}",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\r\n  \"project_id\": \"{{projectId}}\",\r\n  \"name\":\"sama\",\r\n  \"client_room_id\":\"ddczzrcdsffasd1vbw91v1bd14dffnwevv1111cbxbnvdqnceaawdbbbgccbb1\",\r\n  \"moderator_id\":\"sama\",\r\n  \"max_participants\":\"20\",\r\n  \"empty_timeout\":\"300\",\r\n  \"metadata\": {\r\n    \"room_title\": \"yarab room\",\r\n    \"welcome_message\": \"Welcome to room\"\r\n  }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{V.cloud}}/api/v4/rooms/create_quick_video_room",
              "host": [
                "{{V.cloud}}"
              ],
              "path": [
                "api",
                "v4",
                "rooms",
                "create_quick_video_room"
              ]
            },
            "description": "**Endpoint:** `POST {{V.cloud}}/api/v4/rooms/create_quick_video_room`\n\nThis endpoint creates a quick video room within your project. It is designed for rapid setup of video rooms with customizable metadata and participant controls.\n\n### Required Parameters (JSON Body)\n\n- `project_id` (string): Unique identifier for your project. Use as a variable (e.g., `{{projectId}}`).\n    \n- `name` (string): Name of the room or session creator.\n    \n- `client_room_id` (string): Unique client-side identifier for the room.\n    \n- `moderator_id` (string): User ID of the moderator for the room.\n    \n- `max_participants` (string or integer): Maximum number of participants allowed.\n    \n- `empty_timeout` (string or integer): Time (in seconds) after which an empty room will be closed automatically. cant exceed 2000.\n    \n- `metadata` (object): Additional room information.\n    \n    - `room_title` (string): Display title for the room.\n        \n    - `welcome_message` (string): Message shown to users when they join the room.\n        \n\n### Authentication\n\nThis endpoint requires an HMAC SHA256 signature for authentication. The signature must be generated using the full request body (with all variables resolved) and a shared secret. The resulting Base64-encoded signature should be included in the `hash-signature` header.\n\n- **Header:** `hash-signature:`\n    \n- **Secret:** Provided by your API administrator or in your environment variables.\n    \n\n### Example Responses\n\n- **Success:**\n    \n    ``` json\n          {\n            \"room_id\": \"<generated_room_id>\",\n            ...\n          }\n    \n     ```\n    \n- **Invalid Signature:**\n    \n    ``` json\n          {\n            \"error\": \"Invalid signature\"\n          }\n    \n     ```\n    \n\n### Important Notes\n\n- All variables in double curly braces (e.g., `{{projectId}}`, `{{V.cloud}}`) must be resolved from your environment, collection, or global variables before sending the request.\n    \n- Ensure the request body is valid JSON and all required fields are present.\n    \n- If the signature is invalid or missing, the API will return a 401 Unauthorized error with the message `{ \"error\": \"Invalid signature\" }`.\n    \n- The `key` header must also be set with your API key."
          },
          "response": [
            {
              "name": "created success",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "key",
                    "value": "{{key}}"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\"project_id\":\"{{projectId}}\",\"name\":\"hisham\",\"client_room_id\":\"das1wcddxeeaa\",\"moderator_id\":\"hisham\",\"max_participants\":\"20\",\"empty_timeout\":\"300\",\"metadata\":{\"room_title\":\"Test room\",\"welcome_message\":\"Welcome to room\"}}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/rooms/create_quick_video_room",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "rooms",
                    "create_quick_video_room"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": "",
                  "enabled": true
                },
                {
                  "key": "key",
                  "value": "{{key}}",
                  "description": "",
                  "enabled": true
                }
              ],
              "cookie": [],
              "body": "{\"room_id\":\"abc123xyz\",\"status\":\"created\",\"message\":\"Room created successfully\"}"
            },
            {
              "name": "invalid signature",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\"project_id\":\"{{projectId}}\",\"name\":\"hisham\",\"client_room_id\":\"das1wcddxeeaa\",\"moderator_id\":\"hisham\",\"max_participants\":\"20\",\"empty_timeout\":\"300\",\"metadata\":{\"room_title\":\"Test room\",\"welcome_message\":\"Welcome to room\"}}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/rooms/create_quick_video_room",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "rooms",
                    "create_quick_video_room"
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "key",
                  "value": "{{key}}",
                  "description": "",
                  "enabled": true
                },
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": "",
                  "enabled": true
                }
              ],
              "cookie": [],
              "body": "{\"error\":\"Invalid signature\"}"
            },
            {
              "name": "Success 200 OK",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "key",
                    "value": "{{key}}"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\"project_id\":\"{{projectId}}\",\"name\":\"hisham\",\"client_room_id\":\"das1wcddxeeaa\",\"moderator_id\":\"hisham\",\"max_participants\":\"20\",\"empty_timeout\":\"300\",\"metadata\":{\"room_title\":\"Test room\",\"welcome_message\":\"Welcome to room\"}}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/rooms/create_quick_video_room",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "rooms",
                    "create_quick_video_room"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": "",
                  "enabled": true
                },
                {
                  "key": "key",
                  "value": "{{key}}",
                  "description": "",
                  "enabled": true
                }
              ],
              "cookie": [],
              "body": "{\"room_id\": \"room123\", \"name\": \"hisham\", \"client_room_id\": \"das1wcddxeeaa\", \"moderator_id\": \"hisham\", \"max_participants\": 20, \"empty_timeout\": 300, \"metadata\": {\"room_title\": \"Test room\", \"welcome_message\": \"Welcome to room\"}}"
            },
            {
              "name": "Error 401 Unauthorized",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "key",
                    "value": "{{key}}"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\"project_id\":\"{{projectId}}\",\"name\":\"hisham\",\"client_room_id\":\"das1wcddxeeaa\",\"moderator_id\":\"hisham\",\"max_participants\":\"20\",\"empty_timeout\":\"300\",\"metadata\":{\"room_title\":\"Test room\",\"welcome_message\":\"Welcome to room\"}}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/rooms/create_quick_video_room",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "rooms",
                    "create_quick_video_room"
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": "",
                  "enabled": true
                },
                {
                  "key": "key",
                  "value": "{{key}}",
                  "description": "",
                  "enabled": true
                }
              ],
              "cookie": [],
              "body": "{\"error\": \"Invalid signature\"}"
            }
          ]
        },
        {
          "name": "create_schedule_audio_room",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            },
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "let rawMessage;\r",
                  "\r",
                  "if (pm.request.method === \"GET\" || pm.request.method === \"DELETE\") {\r",
                  "    // Get the full path with query string\r",
                  "    rawMessage = pm.request.url.getPathWithQuery();\r",
                  "    \r",
                  "    // Resolve all {{variable}} patterns in the URL\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        // Try to get variable from different scopes\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match; // Keep original if not found\r",
                  "    });\r",
                  "} else {\r",
                  "    // Get raw body\r",
                  "    rawMessage = pm.request.body.raw;\r",
                  "    \r",
                  "    // Resolve variables in body too\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match;\r",
                  "    });\r",
                  "}\r",
                  "\r",
                  "// Normalize: replace CRLF with LF and trim\r",
                  "rawMessage = rawMessage.replace(/\\r\\n/g, '\\n').trim();\r",
                  "\r",
                  "console.log(\"Raw Message to be signed:\", rawMessage);\r",
                  "console.log(\"Message length:\", rawMessage.length);\r",
                  "\r",
                  "const secret = '88bc41de-4caa-4115-b01e-735344ee63d9';\r",
                  "\r",
                  "// Generate HMAC SHA256 and encode as Base64\r",
                  "const hash = CryptoJS.HmacSHA256(rawMessage, secret).toString(CryptoJS.enc.Base64);\r",
                  "\r",
                  "pm.request.headers.upsert({ key: \"hash-signature\", value: hash });\r",
                  "\r",
                  "console.log(\"Generated HMAC:\", hash);\r",
                  "console.log(\"Resolved message:\", rawMessage);\r",
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "key",
                "value": "{{key}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\r\n  \"project_id\": \"{{projectId}}\",\r\n  \"start_at\": \"2025-12-31T06:16\",\r\n  \"max_participants\":\"20\",\r\n  \"client_room_id\":\"dasxzcxc\", //must be unique\r\n  \"moderator_id\":\"hisham\",\r\n  \"empty_timeout\":\"300\",\r\n  \"metadata\": {\r\n    \"room_title\": \"Test room\",\r\n    \"welcome_message\": \"Welcome to room\"\r\n  }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{V.cloud}}/api/v4/rooms/create_schedule_audio_room",
              "host": [
                "{{V.cloud}}"
              ],
              "path": [
                "api",
                "v4",
                "rooms",
                "create_schedule_audio_room"
              ]
            },
            "description": "**Endpoint:** `POST {{V.cloud}}/api/v4/rooms/create_schedule_audio_room`\n\nCreates a scheduled audio room for your project, specifying when the room should be available.\n\n**Required Parameters (JSON Body):**\n\n- `project_id` (string): Project identifier.\n    \n- `client_room_id` (string): Unique client-side room ID.\n    \n- `moderator_id` (string): Moderator's user ID.\n    \n- `start_at` (string): UTC .\n    \n- `max_participants` (string/integer): Max participants.\n    \n- `empty_timeout` (string/integer): Seconds before closing empty room cant exceed 2000.\n    \n- `metadata` (object): Room info (e.g., `room_title`, `welcome_message`).\n    \n\n**Authentication:**\n\n- HMAC SHA256 signature in `hash-signature` header (body signed with secret).\n    \n- `key` header with your API key.\n    \n\n**Example Success:**\n\n``` json\n{\"room_id\": \"<id>\", ...}\n\n ```\n\n**Example Error:**\n\n``` json\n{\"error\": \"Invalid signature\"}\n\n ```\n\n**Notes:**\n\n- Resolve all `{{variable}}` placeholders before sending.\n    \n- 401 Unauthorized if signature is invalid or missing."
          },
          "response": [
            {
              "name": "Error 401 Unauthorized",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "key",
                    "value": "{{key}}"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\"project_id\":\"{{projectId}}\",\"name\":\"Test Room\",\"client_room_id\":\"client123\",\"moderator_id\":\"mod1\",\"scheduled_time\":\"2024-06-01T10:00:00Z\",\"max_participants\":10,\"empty_timeout\":300,\"metadata\":{\"room_title\":\"Demo Room\",\"welcome_message\":\"Welcome!\"}}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/rooms/create_schedule_audio_room",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "rooms",
                    "create_schedule_audio_room"
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": "",
                  "enabled": true
                },
                {
                  "key": "key",
                  "value": "{{key}}",
                  "description": "",
                  "enabled": true
                }
              ],
              "cookie": [],
              "body": "{\"error\": \"Invalid signature\"}"
            },
            {
              "name": "Success 200 OK",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "key",
                    "value": "{{key}}"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\"project_id\":\"{{projectId}}\",\"name\":\"Test Room\",\"client_room_id\":\"client123\",\"moderator_id\":\"mod1\",\"scheduled_time\":\"2024-06-01T10:00:00Z\",\"max_participants\":10,\"empty_timeout\":300,\"metadata\":{\"room_title\":\"Demo Room\",\"welcome_message\":\"Welcome!\"}}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/rooms/create_schedule_audio_room",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "rooms",
                    "create_schedule_audio_room"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": "",
                  "enabled": true
                },
                {
                  "key": "key",
                  "value": "{{key}}",
                  "description": "",
                  "enabled": true
                }
              ],
              "cookie": [],
              "body": "{\"room_id\": \"room123\", \"name\": \"Test Room\", \"scheduled_time\": \"2024-06-01T10:00:00Z\", \"max_participants\": 10, \"metadata\": {\"room_title\": \"Demo Room\", \"welcome_message\": \"Welcome!\"}}"
            }
          ]
        },
        {
          "name": "start_schedule_room",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            },
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "let rawMessage;\r",
                  "\r",
                  "if (pm.request.method === \"GET\" || pm.request.method === \"DELETE\") {\r",
                  "    // Get the full path with query string\r",
                  "    rawMessage = pm.request.url.getPathWithQuery();\r",
                  "    \r",
                  "    // Resolve all {{variable}} patterns in the URL\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        // Try to get variable from different scopes\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match; // Keep original if not found\r",
                  "    });\r",
                  "} else {\r",
                  "    // Get raw body\r",
                  "    rawMessage = pm.request.body.raw;\r",
                  "    \r",
                  "    // Resolve variables in body too\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match;\r",
                  "    });\r",
                  "}\r",
                  "\r",
                  "// Normalize: replace CRLF with LF and trim\r",
                  "rawMessage = rawMessage.replace(/\\r\\n/g, '\\n').trim();\r",
                  "\r",
                  "console.log(\"Raw Message to be signed:\", rawMessage);\r",
                  "console.log(\"Message length:\", rawMessage.length);\r",
                  "\r",
                  "const secret = '88bc41de-4caa-4115-b01e-735344ee63d9';\r",
                  "\r",
                  "// Generate HMAC SHA256 and encode as Base64\r",
                  "const hash = CryptoJS.HmacSHA256(rawMessage, secret).toString(CryptoJS.enc.Base64);\r",
                  "\r",
                  "pm.request.headers.upsert({ key: \"hash-signature\", value: hash });\r",
                  "\r",
                  "console.log(\"Generated HMAC:\", hash);\r",
                  "console.log(\"Resolved message:\", rawMessage);\r",
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "key",
                "value": "{{key}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"room_id\":\"{{room_id}}\",\r\n    \"name\":\"sawdddd\"\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{V.cloud}}/api/v4/rooms/start_schedule_room",
              "host": [
                "{{V.cloud}}"
              ],
              "path": [
                "api",
                "v4",
                "rooms",
                "start_schedule_room"
              ]
            },
            "description": "**Endpoint:** `POST {{V.cloud}}/api/v4/rooms/start_schedule_room`\n\nStarts a scheduled room at the specified time.\n\n**Required Parameters (JSON Body):**\n\n- `room_id` (string): Unique client-side room ID.\n    \n\n**Authentication:**\n\n- HMAC SHA256 signature in `hash-signature` header (body signed with secret).\n    \n- `key` header with your API key.\n    \n\n**Example Success:**\n\n``` json\n{\"room_id\": \"<id>\", ...}\n\n ```\n\n**Example Error:**\n\n``` json\n{\"error\": \"Invalid signature\"}\n\n ```\n\n**Notes:**\n\n- Resolve all `{{variable}}` placeholders before sending.\n    \n- 401 Unauthorized if signature is invalid or missing."
          },
          "response": [
            {
              "name": "Success 200 OK",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "key",
                    "value": "{{key}}"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\"project_id\":\"{{projectId}}\",\"client_room_id\":\"client123\",\"scheduled_time\":\"2024-06-01T10:00:00Z\"}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/rooms/start_schedule_room",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "rooms",
                    "start_schedule_room"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": "",
                  "enabled": true
                },
                {
                  "key": "key",
                  "value": "{{key}}",
                  "description": "",
                  "enabled": true
                }
              ],
              "cookie": [],
              "body": "{\"room_id\": \"room123\", \"started\": true}"
            },
            {
              "name": "Error 401 Unauthorized",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "key",
                    "value": "{{key}}"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\"project_id\":\"{{projectId}}\",\"client_room_id\":\"client123\",\"scheduled_time\":\"2024-06-01T10:00:00Z\"}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/rooms/start_schedule_room",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "rooms",
                    "start_schedule_room"
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": "",
                  "enabled": true
                },
                {
                  "key": "key",
                  "value": "{{key}}",
                  "description": "",
                  "enabled": true
                }
              ],
              "cookie": [],
              "body": "{\"error\": \"Invalid signature\"}"
            }
          ]
        },
        {
          "name": "create_schedule_video_room",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "let response = pm.response.json();",
                  "let room_id = response.room_id;",
                  "pm.environment.set(\"room_id\", room_id);"
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            },
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "let rawMessage;\r",
                  "\r",
                  "if (pm.request.method === \"GET\" || pm.request.method === \"DELETE\") {\r",
                  "    // Get the full path with query string\r",
                  "    rawMessage = pm.request.url.getPathWithQuery();\r",
                  "    \r",
                  "    // Resolve all {{variable}} patterns in the URL\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        // Try to get variable from different scopes\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match; // Keep original if not found\r",
                  "    });\r",
                  "} else {\r",
                  "    // Get raw body\r",
                  "    rawMessage = pm.request.body.raw;\r",
                  "    \r",
                  "    // Resolve variables in body too\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match;\r",
                  "    });\r",
                  "}\r",
                  "\r",
                  "// Normalize: replace CRLF with LF and trim\r",
                  "rawMessage = rawMessage.replace(/\\r\\n/g, '\\n').trim();\r",
                  "\r",
                  "console.log(\"Raw Message to be signed:\", rawMessage);\r",
                  "console.log(\"Message length:\", rawMessage.length);\r",
                  "\r",
                  "const secret = '88bc41de-4caa-4115-b01e-735344ee63d9';\r",
                  "\r",
                  "// Generate HMAC SHA256 and encode as Base64\r",
                  "const hash = CryptoJS.HmacSHA256(rawMessage, secret).toString(CryptoJS.enc.Base64);\r",
                  "\r",
                  "pm.request.headers.upsert({ key: \"hash-signature\", value: hash });\r",
                  "\r",
                  "console.log(\"Generated HMAC:\", hash);\r",
                  "console.log(\"Resolved message:\", rawMessage);\r",
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "key",
                "value": "{{key}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\r\n  \"project_id\": \"{{projectId}}\",\r\n  \"start_at\": \"2025-12-31T06:16\",\r\n  \"max_participants\":\"20\",\r\n  \"client_room_id\":\"das\", //must be unique\r\n  \"moderator_id\":\"hisham\",\r\n  \"empty_timeout\":\"300\",\r\n  \"metadata\": {\r\n    \"room_title\": \"Test room\",\r\n    \"welcome_message\": \"Welcome to room\"\r\n  }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{V.cloud}}/api/v4/rooms/create_schedule_video_room",
              "host": [
                "{{V.cloud}}"
              ],
              "path": [
                "api",
                "v4",
                "rooms",
                "create_schedule_video_room"
              ]
            },
            "description": "**Endpoint:** `POST {{V.cloud}}/api/v4/rooms/create_schedule_video_room`\n\nCreates a scheduled video room for your project, allowing you to specify when the room should be available.\n\n**Required Parameters (JSON Body):**\n\n- `project_id` (string): Project identifier.\n    \n- `name` (string): Creator's name.\n    \n- `client_room_id` (string): Unique client-side room ID.\n    \n- `moderator_id` (string): Moderator's user ID.\n    \n- `start_at` (string): UTC.\n    \n- `max_participants` (string/integer): Max participants.\n    \n- `empty_timeout` (string/integer): Seconds before closing empty room cant exceed 2000.\n    \n- `metadata` (object): Room info (e.g., `room_title`, `welcome_message`).\n    \n\n**Authentication:**\n\n- HMAC SHA256 signature in `hash-signature` header (body signed with secret).\n    \n- `key` header with your API key.\n    \n\n**Example Success:**\n\n``` json\n{\"room_id\": \"<id>\", ...}\n\n ```\n\n**Example Error:**\n\n``` json\n{\"error\": \"Invalid signature\"}\n\n ```\n\n**Notes:**\n\n- Resolve all `{{variable}}` placeholders before sending.\n    \n- 401 Unauthorized if signature is invalid or missing."
          },
          "response": [
            {
              "name": "Error 401 Unauthorized",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "key",
                    "value": "{{key}}"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\"project_id\":\"{{projectId}}\",\"name\":\"Test Room\",\"client_room_id\":\"client123\",\"moderator_id\":\"mod1\",\"scheduled_time\":\"2024-06-01T10:00:00Z\",\"max_participants\":10,\"empty_timeout\":300,\"metadata\":{\"room_title\":\"Demo Room\",\"welcome_message\":\"Welcome!\"}}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/rooms/create_schedule_video_room",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "rooms",
                    "create_schedule_video_room"
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": "",
                  "enabled": true
                },
                {
                  "key": "key",
                  "value": "{{key}}",
                  "description": "",
                  "enabled": true
                }
              ],
              "cookie": [],
              "body": "{\"error\": \"Invalid signature\"}"
            },
            {
              "name": "Success 200 OK",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "key",
                    "value": "{{key}}"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\"project_id\":\"{{projectId}}\",\"name\":\"Test Room\",\"client_room_id\":\"client123\",\"moderator_id\":\"mod1\",\"scheduled_time\":\"2024-06-01T10:00:00Z\",\"max_participants\":10,\"empty_timeout\":300,\"metadata\":{\"room_title\":\"Demo Room\",\"welcome_message\":\"Welcome!\"}}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/rooms/create_schedule_video_room",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "rooms",
                    "create_schedule_video_room"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": "",
                  "enabled": true
                },
                {
                  "key": "key",
                  "value": "{{key}}",
                  "description": "",
                  "enabled": true
                }
              ],
              "cookie": [],
              "body": "{\"room_id\": \"12345\", \"name\": \"Test Room\", \"scheduled_time\": \"2024-06-01T10:00:00Z\", \"max_participants\": 10, \"metadata\": {\"room_title\": \"Demo Room\", \"welcome_message\": \"Welcome!\"}}"
            }
          ]
        },
        {
          "name": "fetch_past_rooms",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "let rawMessage;",
                  "",
                  "if (pm.request.method === \"GET\" || pm.request.method === \"DELETE\") {",
                  "    // Get the full path with query string",
                  "    rawMessage = pm.request.url.getPathWithQuery();",
                  "    ",
                  "    // Resolve all {{variable}} patterns in the URL",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {",
                  "        // Try to get variable from different scopes",
                  "        return pm.collectionVariables.get(varName) || ",
                  "               pm.environment.get(varName) || ",
                  "               pm.globals.get(varName) || ",
                  "               pm.variables.get(varName) || ",
                  "               match; // Keep original if not found",
                  "    });",
                  "} else {",
                  "    // Get raw body",
                  "    rawMessage = pm.request.body.raw;",
                  "    ",
                  "    // Resolve variables in body too",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {",
                  "        return pm.collectionVariables.get(varName) || ",
                  "               pm.environment.get(varName) || ",
                  "               pm.globals.get(varName) || ",
                  "               pm.variables.get(varName) || ",
                  "               match;",
                  "    });",
                  "}",
                  "",
                  "// Normalize: replace CRLF with LF and trim",
                  "rawMessage = rawMessage.replace(/\\r\\n/g, '\\n').trim();",
                  "",
                  "console.log(\"Raw Message to be signed:\", rawMessage);",
                  "console.log(\"Message length:\", rawMessage.length);",
                  "",
                  "const secret = '56eba922-b01f-418b-9493-556eb62c5f25';",
                  "",
                  "// Generate HMAC SHA256 and encode as Base64",
                  "const hash = CryptoJS.HmacSHA256(rawMessage, secret).toString(CryptoJS.enc.Base64);",
                  "",
                  "pm.request.headers.upsert({ key: \"hash-signature\", value: hash });",
                  "",
                  "console.log(\"Generated HMAC:\", hash);",
                  "console.log(\"Resolved message:\", rawMessage);"
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "key",
                "value": "{{key}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"project_id\": \"{{projectId}}\",\n  \"from\": 0,\n  \"limit\": 10,\n  \"order_by\": \"DESC\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{V.cloud}}/api/v3/rooms/fetch_past_rooms",
              "host": [
                "{{V.cloud}}"
              ],
              "path": [
                "api",
                "v3",
                "rooms",
                "fetch_past_rooms"
              ]
            },
            "description": "**Endpoint:** `POST {{V.cloud}}/api/v4/rooms/fetch_past_rooms`\n\nFetches a list of previously created rooms for your project.\n\n**Required Parameters (JSON Body):**\n\n- `project_id` (string): Project identifier.\n    \n- Additional filters may be supported (see API docs).\n    \n\n**Authentication:**\n\n- HMAC SHA256 signature in `hash-signature` header (body signed with secret).\n    \n- `key` header with your API key.\n    \n\n**Example Success:**\n\n``` json\n{\"rooms\": [ ... ]}\n\n ```\n\n**Example Error:**\n\n``` json\n{\"error\": \"Invalid signature\"}\n\n ```\n\n**Notes:**\n\n- Resolve all `{{variable}}` placeholders before sending.\n    \n- 401 Unauthorized if signature is invalid or missing."
          },
          "response": []
        },
        {
          "name": "get_active_room_info",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "let rawMessage;\r",
                  "\r",
                  "if (pm.request.method === \"GET\" || pm.request.method === \"DELETE\") {\r",
                  "    // Get the full path with query string\r",
                  "    rawMessage = pm.request.url.getPathWithQuery();\r",
                  "    \r",
                  "    // Resolve all {{variable}} patterns in the URL\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        // Try to get variable from different scopes\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match; // Keep original if not found\r",
                  "    });\r",
                  "} else {\r",
                  "    // Get raw body\r",
                  "    rawMessage = pm.request.body.raw;\r",
                  "    \r",
                  "    // Resolve variables in body too\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match;\r",
                  "    });\r",
                  "}\r",
                  "\r",
                  "// Normalize: replace CRLF with LF and trim\r",
                  "rawMessage = rawMessage.replace(/\\r\\n/g, '\\n').trim();\r",
                  "\r",
                  "console.log(\"Raw Message to be signed:\", rawMessage);\r",
                  "console.log(\"Message length:\", rawMessage.length);\r",
                  "\r",
                  "const secret = '88bc41de-4caa-4115-b01e-735344ee63d9';\r",
                  "\r",
                  "// Generate HMAC SHA256 and encode as Base64\r",
                  "const hash = CryptoJS.HmacSHA256(rawMessage, secret).toString(CryptoJS.enc.Base64);\r",
                  "\r",
                  "pm.request.headers.upsert({ key: \"hash-signature\", value: hash });\r",
                  "\r",
                  "console.log(\"Generated HMAC:\", hash);\r",
                  "console.log(\"Resolved message:\", rawMessage);\r",
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            }
          ],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          },
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "key",
                "value": "{{key}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{V.cloud}}/api/v3/rooms/get_active_room_info?room_id={{room_id}}",
              "host": [
                "{{V.cloud}}"
              ],
              "path": [
                "api",
                "v3",
                "rooms",
                "get_active_room_info"
              ],
              "query": [
                {
                  "key": "room_id",
                  "value": "{{room_id}}"
                }
              ]
            },
            "description": "**Endpoint:** `GET {{V.cloud}}/api/v4/rooms/get_active_room_info?room_id={{room_id}}`\n\nRetrieves information about an active room.\n\n**Required Parameters (Query):**\n\n- `room_id` (string): Room identifier.\n    \n\n**Authentication:**\n\n- HMAC SHA256 signature in `hash-signature` header (sign query string).\n    \n- `key` header with your API key.\n    \n\n**Example Success:**\n\n``` json\n{\"room\": { ... }}\n\n ```\n\n**Example Error:**\n\n``` json\n{\"error\": \"Invalid signature\"}\n\n ```\n\n**Notes:**\n\n- Resolve all `{{variable}}` placeholders before sending.\n    \n- 401 Unauthorized if signature is invalid or missing."
          },
          "response": [
            {
              "name": "Success 200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/rooms/get_active_room_info?room_id={{room_id}}",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "rooms",
                    "get_active_room_info"
                  ],
                  "query": [
                    {
                      "key": "room_id",
                      "value": "{{room_id}}"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "key",
                  "value": "{{key}}",
                  "description": "",
                  "enabled": true
                }
              ],
              "cookie": [],
              "body": "{\"room\": {\"room_id\": \"room123\", \"status\": \"active\"}}"
            },
            {
              "name": "Error 401 Unauthorized",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/rooms/get_active_room_info?room_id={{room_id}}",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "rooms",
                    "get_active_room_info"
                  ],
                  "query": [
                    {
                      "key": "room_id",
                      "value": "{{room_id}}"
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "key",
                  "value": "{{key}}",
                  "description": "",
                  "enabled": true
                }
              ],
              "cookie": [],
              "body": "{\"error\": \"Invalid signature\"}"
            }
          ]
        },
        {
          "name": "get_room_events",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "let rawMessage;\r",
                  "\r",
                  "if (pm.request.method === \"GET\" || pm.request.method === \"DELETE\") {\r",
                  "    // Get the full path with query string\r",
                  "    rawMessage = pm.request.url.getPathWithQuery();\r",
                  "    \r",
                  "    // Resolve all {{variable}} patterns in the URL\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        // Try to get variable from different scopes\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match; // Keep original if not found\r",
                  "    });\r",
                  "} else {\r",
                  "    // Get raw body\r",
                  "    rawMessage = pm.request.body.raw;\r",
                  "    \r",
                  "    // Resolve variables in body too\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match;\r",
                  "    });\r",
                  "}\r",
                  "\r",
                  "// Normalize: replace CRLF with LF and trim\r",
                  "rawMessage = rawMessage.replace(/\\r\\n/g, '\\n').trim();\r",
                  "\r",
                  "console.log(\"Raw Message to be signed:\", rawMessage);\r",
                  "console.log(\"Message length:\", rawMessage.length);\r",
                  "\r",
                  "const secret = '88bc41de-4caa-4115-b01e-735344ee63d9';\r",
                  "\r",
                  "// Generate HMAC SHA256 and encode as Base64\r",
                  "const hash = CryptoJS.HmacSHA256(rawMessage, secret).toString(CryptoJS.enc.Base64);\r",
                  "\r",
                  "pm.request.headers.upsert({ key: \"hash-signature\", value: hash });\r",
                  "\r",
                  "console.log(\"Generated HMAC:\", hash);\r",
                  "console.log(\"Resolved message:\", rawMessage);\r",
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "key",
                "value": "",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{V.cloud}}/api/v4/webhook/get_room_events/{{room_id}}",
              "host": [
                "{{V.cloud}}"
              ],
              "path": [
                "api",
                "v4",
                "webhook",
                "get_room_events",
                "{{room_id}}"
              ]
            },
            "description": "**Endpoint:** `GET {{V.cloud}}/api/v4/webhook/get_room_events/{{room_id}}`\n\nRetrieves webhook events for a specific room.\n\n**Required Parameters (Path):**\n\n- `room_id` (string): Room identifier.\n    \n\n**Authentication:**\n\n- HMAC SHA256 signature in `hash-signature` header (sign path).\n    \n- `key` header with your API key.\n    \n\n**Example Success:**\n\n``` json\n{\"events\": [ ... ]}\n\n ```\n\n**Example Error:**\n\n``` json\n{\"error\": \"Invalid signature\"}\n\n ```\n\n**Notes:**\n\n- Resolve all `{{variable}}` placeholders before sending.\n    \n- 401 Unauthorized if signature is invalid or missing."
          },
          "response": [
            {
              "name": "Error 401 Unauthorized",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": ""
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/webhook/get_room_events/{{room_id}}",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "webhook",
                    "get_room_events",
                    "{{room_id}}"
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "key",
                  "value": "{{key}}",
                  "description": "",
                  "enabled": true
                }
              ],
              "cookie": [],
              "body": "{\"error\": \"Invalid signature\"}"
            },
            {
              "name": "Success 200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": ""
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/webhook/get_room_events/{{room_id}}",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "webhook",
                    "get_room_events",
                    "{{room_id}}"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "key",
                  "value": "{{key}}",
                  "description": "",
                  "enabled": true
                }
              ],
              "cookie": [],
              "body": "{\"events\": [{\"event\": \"joined\", \"user_id\": \"user1\"}]}"
            }
          ]
        },
        {
          "name": "room_status",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "let rawMessage;\r",
                  "\r",
                  "if (pm.request.method === \"GET\" || pm.request.method === \"DELETE\") {\r",
                  "    // Get the full path with query string\r",
                  "    rawMessage = pm.request.url.getPathWithQuery();\r",
                  "    \r",
                  "    // Resolve all {{variable}} patterns in the URL\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        // Try to get variable from different scopes\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match; // Keep original if not found\r",
                  "    });\r",
                  "} else {\r",
                  "    // Get raw body\r",
                  "    rawMessage = pm.request.body.raw;\r",
                  "    \r",
                  "    // Resolve variables in body too\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match;\r",
                  "    });\r",
                  "}\r",
                  "\r",
                  "// Normalize: replace CRLF with LF and trim\r",
                  "rawMessage = rawMessage.replace(/\\r\\n/g, '\\n').trim();\r",
                  "\r",
                  "console.log(\"Raw Message to be signed:\", rawMessage);\r",
                  "console.log(\"Message length:\", rawMessage.length);\r",
                  "\r",
                  "const secret = '88bc41de-4caa-4115-b01e-735344ee63d9';\r",
                  "\r",
                  "// Generate HMAC SHA256 and encode as Base64\r",
                  "const hash = CryptoJS.HmacSHA256(rawMessage, secret).toString(CryptoJS.enc.Base64);\r",
                  "\r",
                  "pm.request.headers.upsert({ key: \"hash-signature\", value: hash });\r",
                  "\r",
                  "console.log(\"Generated HMAC:\", hash);\r",
                  "console.log(\"Resolved message:\", rawMessage);\r",
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            }
          ],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          },
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "key",
                "value": "{{key}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{V.cloud}}/api/v4/rooms/room_status?room_id={{room_id}}",
              "host": [
                "{{V.cloud}}"
              ],
              "path": [
                "api",
                "v4",
                "rooms",
                "room_status"
              ],
              "query": [
                {
                  "key": "room_id",
                  "value": "{{room_id}}"
                }
              ]
            },
            "description": "**Endpoint:** `GET {{V.cloud}}/api/v4/rooms/room_status?room_id={{room_id}}`\n\nRetrieves the status of a specific room.\n\n**Required Parameters (Query):**\n\n- `room_id` (string): Room identifier.\n    \n\n**Authentication:**\n\n- HMAC SHA256 signature in `hash-signature` header (sign query string).\n    \n- `key` header with your API key.\n    \n\n**Example Success:**\n\n``` json\n{\"status\": \"active\", ...}\n\n ```\n\n**Example Error:**\n\n``` json\n{\"error\": \"Invalid signature\"}\n\n ```\n\n**Notes:**\n\n- Resolve all `{{variable}}` placeholders before sending.\n    \n- 401 Unauthorized if signature is invalid or missing."
          },
          "response": [
            {
              "name": "Success 200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/rooms/room_status?room_id={{room_id}}",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "rooms",
                    "room_status"
                  ],
                  "query": [
                    {
                      "key": "room_id",
                      "value": "{{room_id}}"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "key",
                  "value": "{{key}}",
                  "description": "",
                  "enabled": true
                }
              ],
              "cookie": [],
              "body": "{\"status\": \"active\", \"room_id\": \"room123\"}"
            },
            {
              "name": "Error 401 Unauthorized",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/rooms/room_status?room_id={{room_id}}",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "rooms",
                    "room_status"
                  ],
                  "query": [
                    {
                      "key": "room_id",
                      "value": "{{room_id}}"
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "key",
                  "value": "{{key}}",
                  "description": "",
                  "enabled": true
                }
              ],
              "cookie": [],
              "body": "{\"error\": \"Invalid signature\"}"
            }
          ]
        },
        {
          "name": "join_room",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "let rawMessage;\r",
                  "\r",
                  "if (pm.request.method === \"GET\" || pm.request.method === \"DELETE\") {\r",
                  "    // Get the full path with query string\r",
                  "    rawMessage = pm.request.url.getPathWithQuery();\r",
                  "    \r",
                  "    // Resolve all {{variable}} patterns in the URL\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        // Try to get variable from different scopes\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match; // Keep original if not found\r",
                  "    });\r",
                  "} else {\r",
                  "    // Get raw body\r",
                  "    rawMessage = pm.request.body.raw;\r",
                  "    \r",
                  "    // Resolve variables in body too\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match;\r",
                  "    });\r",
                  "}\r",
                  "\r",
                  "// Normalize: replace CRLF with LF and trim\r",
                  "rawMessage = rawMessage.replace(/\\r\\n/g, '\\n').trim();\r",
                  "\r",
                  "console.log(\"Raw Message to be signed:\", rawMessage);\r",
                  "console.log(\"Message length:\", rawMessage.length);\r",
                  "\r",
                  "const secret = '88bc41de-4caa-4115-b01e-735344ee63d9';\r",
                  "\r",
                  "// Generate HMAC SHA256 and encode as Base64\r",
                  "const hash = CryptoJS.HmacSHA256(rawMessage, secret).toString(CryptoJS.enc.Base64);\r",
                  "\r",
                  "pm.request.headers.upsert({ key: \"hash-signature\", value: hash });\r",
                  "\r",
                  "console.log(\"Generated HMAC:\", hash);\r",
                  "console.log(\"Resolved message:\", rawMessage);\r",
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "key",
                "value": "{{key}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\r\n  \"room_id\": \"{{room_id}}\",\r\n  \"user_info\": {\r\n    \"name\": \"Your ame\",\r\n    \"is_admin\": false,\r\n    \"is_hidden\": false,\r\n     \"user_metadata\":{\r\n        \"role\":\"attendee\"\r\n  }\r\n  }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{V.cloud}}/api/v4/rooms/join_room",
              "host": [
                "{{V.cloud}}"
              ],
              "path": [
                "api",
                "v4",
                "rooms",
                "join_room"
              ]
            },
            "description": "**Endpoint:** `POST {{V.cloud}}/api/v4/rooms/join_room`\n\nAllows a user to join a specific room.\n\n**Required Parameters (JSON Body):**\n\n- `room_id` (string): Room identifier.\n    \n- `user_info`\n    \n- User info includes metadata that identifies the user’s role within the system, where one of the following values must be applied: host, moderator, presenter, or attendee.\n    \n- Additional parameters may be supported (see API docs).\n    \n\n**Authentication:**\n\n- HMAC SHA256 signature in `hash-signature` header (body signed with secret).\n    \n- `key` header with your API key.\n    \n\n**Example Success:**\n\n``` json\n{\"joined\": true, ...}\n\n ```\n\n**Example Error:**\n\n``` json\n{\"error\": \"Invalid signature\"}\n\n ```\n\n**Notes:**\n\n- Resolve all `{{variable}}` placeholders before sending.\n    \n- 401 Unauthorized if signature is invalid or missing."
          },
          "response": [
            {
              "name": "Error 401 Unauthorized",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "key",
                    "value": "{{key}}"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\"room_id\":\"room123\",\"user_id\":\"user1\"}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/rooms/join_room",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "rooms",
                    "join_room"
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": "",
                  "enabled": true
                },
                {
                  "key": "key",
                  "value": "{{key}}",
                  "description": "",
                  "enabled": true
                }
              ],
              "cookie": [],
              "body": "{\"error\": \"Invalid signature\"}"
            }
          ]
        },
        {
          "name": "create_invitation_link",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "let rawMessage;\r",
                  "\r",
                  "if (pm.request.method === \"GET\" || pm.request.method === \"DELETE\") {\r",
                  "    // Get the full path with query string\r",
                  "    rawMessage = pm.request.url.getPathWithQuery();\r",
                  "    \r",
                  "    // Resolve all {{variable}} patterns in the URL\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        // Try to get variable from different scopes\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match; // Keep original if not found\r",
                  "    });\r",
                  "} else {\r",
                  "    // Get raw body\r",
                  "    rawMessage = pm.request.body.raw;\r",
                  "    \r",
                  "    // Resolve variables in body too\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match;\r",
                  "    });\r",
                  "}\r",
                  "\r",
                  "// Normalize: replace CRLF with LF and trim\r",
                  "rawMessage = rawMessage.replace(/\\r\\n/g, '\\n').trim();\r",
                  "\r",
                  "console.log(\"Raw Message to be signed:\", rawMessage);\r",
                  "console.log(\"Message length:\", rawMessage.length);\r",
                  "\r",
                  "const secret = 'f8226e30-ed72-4695-b93c-1d6bcaee147b';\r",
                  "\r",
                  "// Generate HMAC SHA256 and encode as Base64\r",
                  "const hash = CryptoJS.HmacSHA256(rawMessage, secret).toString(CryptoJS.enc.Base64);\r",
                  "\r",
                  "pm.request.headers.upsert({ key: \"hash-signature\", value: hash });\r",
                  "\r",
                  "console.log(\"Generated HMAC:\", hash);\r",
                  "console.log(\"Resolved message:\", rawMessage);\r",
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "key",
                "value": "{{key}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"room_id\":\"{{room_id}}\",\n    \"role\":\"admin\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{V.cloud}}/api/v4/rooms/create_invitation_link",
              "host": [
                "{{V.cloud}}"
              ],
              "path": [
                "api",
                "v4",
                "rooms",
                "create_invitation_link"
              ]
            },
            "description": "**Endpoint:** `POST {{V.cloud}}/api/v4/rooms/create_invitation_link`\n\nCreates an invitation link for a room.\n\n**Required Parameters (JSON Body):**\n\n- `room_id` (string): Room identifier.\n    \n- role (admin or viewer).\n    \n- Additional parameters may be supported (see API docs).\n    \n\n**Authentication:**\n\n- HMAC SHA256 signature in `hash-signature` header (body signed with secret).\n    \n- `key` header with your API key.\n    \n\n**Example Success:**\n\n``` json\n{\"invitation_link\": \"...\"}\n\n ```\n\n**Example Error:**\n\n``` json\n{\"error\": \"Invalid signature\"}\n\n ```\n\n**Notes:**\n\n- Resolve all `{{variable}}` placeholders before sending.\n    \n- 401 Unauthorized if signature is invalid or missing."
          },
          "response": [
            {
              "name": "Success 200 OK",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "key",
                    "value": "{{key}}"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\"room_id\":\"room123\",\"user_id\":\"user1\"}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/rooms/create_invitation_link",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "rooms",
                    "create_invitation_link"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": "",
                  "enabled": true
                },
                {
                  "key": "key",
                  "value": "{{key}}",
                  "description": "",
                  "enabled": true
                }
              ],
              "cookie": [],
              "body": "{\"invitation_link\": \"https://example.com/invite/abc123\"}"
            },
            {
              "name": "Error 401 Unauthorized",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "key",
                    "value": "{{key}}"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\"room_id\":\"room123\",\"user_id\":\"user1\"}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/rooms/create_invitation_link",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "rooms",
                    "create_invitation_link"
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": "",
                  "enabled": true
                },
                {
                  "key": "key",
                  "value": "{{key}}",
                  "description": "",
                  "enabled": true
                }
              ],
              "cookie": [],
              "body": "{\"error\": \"Invalid signature\"}"
            }
          ]
        },
        {
          "name": "end_room",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "let rawMessage;\r",
                  "\r",
                  "if (pm.request.method === \"GET\" || pm.request.method === \"DELETE\") {\r",
                  "    // Get the full path with query string\r",
                  "    rawMessage = pm.request.url.getPathWithQuery();\r",
                  "    \r",
                  "    // Resolve all {{variable}} patterns in the URL\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        // Try to get variable from different scopes\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match; // Keep original if not found\r",
                  "    });\r",
                  "} else {\r",
                  "    // Get raw body\r",
                  "    rawMessage = pm.request.body.raw;\r",
                  "    \r",
                  "    // Resolve variables in body too\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match;\r",
                  "    });\r",
                  "}\r",
                  "\r",
                  "// Normalize: replace CRLF with LF and trim\r",
                  "rawMessage = rawMessage.replace(/\\r\\n/g, '\\n').trim();\r",
                  "\r",
                  "console.log(\"Raw Message to be signed:\", rawMessage);\r",
                  "console.log(\"Message length:\", rawMessage.length);\r",
                  "\r",
                  "const secret = '88bc41de-4caa-4115-b01e-735344ee63d9';\r",
                  "\r",
                  "// Generate HMAC SHA256 and encode as Base64\r",
                  "const hash = CryptoJS.HmacSHA256(rawMessage, secret).toString(CryptoJS.enc.Base64);\r",
                  "\r",
                  "pm.request.headers.upsert({ key: \"hash-signature\", value: hash });\r",
                  "\r",
                  "console.log(\"Generated HMAC:\", hash);\r",
                  "console.log(\"Resolved message:\", rawMessage);\r",
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "key",
                "value": "{{key}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"room_id\":\"{{room_id}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{V.cloud}}/api/v4/rooms/end_room",
              "host": [
                "{{V.cloud}}"
              ],
              "path": [
                "api",
                "v4",
                "rooms",
                "end_room"
              ]
            },
            "description": "**Endpoint:** `POST {{V.cloud}}/api/v4/rooms/end_room`\n\nEnds a specific room session.\n\n**Required Parameters (JSON Body):**\n\n- `room_id` (string): Room identifier.\n    \n\n**Authentication:**\n\n- HMAC SHA256 signature in `hash-signature` header (body signed with secret).\n    \n- `key` header with your API key.\n    \n\n**Example Success:**\n\n``` json\n{\"ended\": true}\n\n ```\n\n**Example Error:**\n\n``` json\n{\"error\": \"Invalid signature\"}\n\n ```\n\n**Notes:**\n\n- Resolve all `{{variable}}` placeholders before sending.\n    \n- 401 Unauthorized if signature is invalid or missing."
          },
          "response": [
            {
              "name": "Success 200 OK",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "key",
                    "value": "{{key}}"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\"room_id\":\"room123\"}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/rooms/end_room",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "rooms",
                    "end_room"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": "",
                  "enabled": true
                },
                {
                  "key": "key",
                  "value": "{{key}}",
                  "description": "",
                  "enabled": true
                }
              ],
              "cookie": [],
              "body": "{\"ended\": true}"
            },
            {
              "name": "Error 401 Unauthorized",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "key",
                    "value": "{{key}}"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\"room_id\":\"room123\"}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/rooms/end_room",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "rooms",
                    "end_room"
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": "",
                  "enabled": true
                },
                {
                  "key": "key",
                  "value": "{{key}}",
                  "description": "",
                  "enabled": true
                }
              ],
              "cookie": [],
              "body": "{\"error\": \"Invalid signature\"}"
            }
          ]
        },
        {
          "name": "get_active_rooms_info",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "let rawMessage;",
                  "",
                  "if (pm.request.method === \"GET\" || pm.request.method === \"DELETE\") {",
                  "    // Get the full path with query string",
                  "    rawMessage = pm.request.url.getPathWithQuery();",
                  "    ",
                  "    // Resolve all {{variable}} patterns in the URL",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {",
                  "        // Try to get variable from different scopes",
                  "        return pm.collectionVariables.get(varName) || ",
                  "               pm.environment.get(varName) || ",
                  "               pm.globals.get(varName) || ",
                  "               pm.variables.get(varName) || ",
                  "               match; // Keep original if not found",
                  "    });",
                  "} else {",
                  "    // Get raw body",
                  "    rawMessage = pm.request.body.raw;",
                  "    ",
                  "    // Resolve variables in body too",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {",
                  "        return pm.collectionVariables.get(varName) || ",
                  "               pm.environment.get(varName) || ",
                  "               pm.globals.get(varName) || ",
                  "               pm.variables.get(varName) || ",
                  "               match;",
                  "    });",
                  "}",
                  "",
                  "// Normalize: replace CRLF with LF and trim",
                  "rawMessage = rawMessage.replace(/\\r\\n/g, '\\n').trim();",
                  "",
                  "console.log(\"Raw Message to be signed:\", rawMessage);",
                  "console.log(\"Message length:\", rawMessage.length);",
                  "",
                  "const secret = '56eba922-b01f-418b-9493-556eb62c5f25';",
                  "",
                  "// Generate HMAC SHA256 and encode as Base64",
                  "const hash = CryptoJS.HmacSHA256(rawMessage, secret).toString(CryptoJS.enc.Base64);",
                  "",
                  "pm.request.headers.upsert({ key: \"hash-signature\", value: hash });",
                  "",
                  "console.log(\"Generated HMAC:\", hash);",
                  "console.log(\"Resolved message:\", rawMessage);"
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "key",
                "value": "{{key}}",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{V.cloud}}/api/v4/rooms/get_active_rooms_info",
              "host": [
                "{{V.cloud}}"
              ],
              "path": [
                "api",
                "v4",
                "rooms",
                "get_active_rooms_info"
              ]
            },
            "description": "**Endpoint:** `GET {{V.cloud}}/api/v4/rooms/get_active_rooms_info`\n\nRetrieves information about all active rooms in your project.\n\n**Required Parameters:**\n\n- None (uses authentication context).\n    \n\n**Authentication:**\n\n- HMAC SHA256 signature in `hash-signature` header (sign path).\n    \n- `key` header with your API key.\n    \n\n**Example Success:**\n\n``` json\n{\"rooms\": [ ... ]}\n\n ```\n\n**Example Error:**\n\n``` json\n{\"error\": \"Invalid signature\"}\n\n ```\n\n**Notes:**\n\n- Resolve all `{{variable}}` placeholders before sending.\n    \n- 401 Unauthorized if signature is invalid or missing."
          },
          "response": [
            {
              "name": "Success 200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": ""
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/rooms/get_active_rooms_info",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "rooms",
                    "get_active_rooms_info"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "key",
                  "value": "{{key}}",
                  "description": "",
                  "enabled": true
                }
              ],
              "cookie": [],
              "body": "{\"rooms\": [{\"room_id\": \"room123\", \"status\": \"active\"}]}"
            },
            {
              "name": "Error 401 Unauthorized",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": ""
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/rooms/get_active_rooms_info",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "rooms",
                    "get_active_rooms_info"
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "key",
                  "value": "{{key}}",
                  "description": "",
                  "enabled": true
                }
              ],
              "cookie": [],
              "body": "{\"error\": \"Invalid signature\"}"
            }
          ]
        }
      ],
      "description": "Contains endpoints for creating, managing, joining, and ending audio and video rooms. Includes quick and scheduled room creation, joining rooms, generating invitation links, and retrieving room status or events.\n\n**Reqiurements:**\n\n- **active project id**\n    \n- **api key of project**\n    \n- **secret key of project**\n    \n- **HMAC Signature Generation Script (pre-request):**  \n    This script dynamically generates an **HMAC-SHA256( Base64-encoded) signature** for each request sent from Postman. The signature is based on the request’s **path/query (GET/DELETE)** or **raw body (POST/PUT/PATCH)** after resolving all Postman variables (`{{var}}`).  \n    The generated signature is then added to the request headers as `hash-signature`.\n    \n\n**How HMAC Signature Generation Script works:**\n\n1\\. Identify message to sign\n\n- GET / DELETE: full API path + query\n    \n- POST / PUT / PATCH: raw request body\n    \n\n2\\. Replace any Postman variables\n\nExample: `{{userId}}`, `{{token}}`, etc.\n\n3\\. Generate Base64-encoded HMAC-SHA256 signature\n\nUsing the secret key\n\n- Note :change secret in the pre-request script with your project secret key."
    },
    {
      "name": "Projects",
      "item": [
        {
          "name": "get_project",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "var responseJson = pm.response.json();",
                  "var key = responseJson.message.projects[0].api_key;",
                  "var projectId = responseJson.message.projects[0].id;",
                  "",
                  "pm.environment.set(\"key\", key);",
                  "pm.environment.set(\"projectId\", projectId);"
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            },
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "let rawMessage;\r",
                  "\r",
                  "if (pm.request.method === \"GET\" || pm.request.method === \"DELETE\") {\r",
                  "    // Get the full path with query string\r",
                  "    rawMessage = pm.request.url.getPathWithQuery();\r",
                  "    \r",
                  "    // Resolve all {{variable}} patterns in the URL\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        // Try to get variable from different scopes\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match; // Keep original if not found\r",
                  "    });\r",
                  "} else {\r",
                  "    // Get raw body\r",
                  "    rawMessage = pm.request.body.raw;\r",
                  "    \r",
                  "    // Resolve variables in body too\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match;\r",
                  "    });\r",
                  "}\r",
                  "\r",
                  "// Normalize: replace CRLF with LF and trim\r",
                  "rawMessage = rawMessage.replace(/\\r\\n/g, '\\n').trim();\r",
                  "\r",
                  "console.log(\"Raw Message to be signed:\", rawMessage);\r",
                  "console.log(\"Message length:\", rawMessage.length);\r",
                  "\r",
                  "const secret = 'd8138db0-a2c5-4bd9-b92f-f69d52b4fbb5';\r",
                  "\r",
                  "// Generate HMAC SHA256 and encode as Base64\r",
                  "const hash = CryptoJS.HmacSHA256(rawMessage, secret).toString(CryptoJS.enc.Base64);\r",
                  "\r",
                  "pm.request.headers.upsert({ key: \"hash-signature\", value: hash });\r",
                  "\r",
                  "console.log(\"Generated HMAC:\", hash);\r",
                  "console.log(\"Resolved message:\", rawMessage);\r",
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "key",
                "value": "{{key}}",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{V.cloud}}/api/v4/projects/get_project?project_id={{projectId}}",
              "host": [
                "{{V.cloud}}"
              ],
              "path": [
                "api",
                "v4",
                "projects",
                "get_project"
              ],
              "query": [
                {
                  "key": "project_id",
                  "value": "{{projectId}}"
                }
              ]
            },
            "description": "**Description:**\n\nRetrieves detailed information about a specific project by its unique identifier.\n\n**Endpoint:**  \n`GET {{V.cloud}}/api/v4/projects/get_project?project_id={{projectId}}`\n\n**Required Parameters:**\n\n- `project_id` (query): The unique ID of the project to retrieve.\n    \n- `key` (header): The API key associated with your account or project.\n    \n\n**Authentication:**\n\n- This endpoint requires an HMAC SHA256 signature for authentication.\n    \n- The signature must be generated using the full request path (including query parameters) and a shared secret.\n    \n- Add the generated signature to the `hash-signature` header.\n    \n\n**How to Generate the Signature:**\n\n1. Construct the full request path with resolved variables (e.g., `/api/v3/projects/get_project?project_id=12345`).\n    \n2. Use your secret key to generate an HMAC SHA256 hash of the path.\n    \n3. Encode the hash in Base64.\n    \n4. Set the result as the value of the `hash-signature` header.\n    \n\n**Expected Responses:**\n\n- **Success (200):** Returns project details in the response body.\n    \n- **401 Unauthorized:**\n    \n    - `{ \"error\": \"Invalid or missing api_key\" }` — The API key is missing or incorrect.\n        \n    - `{ \"error\": \"Invalid signature\" }` — The HMAC signature is missing or invalid.\n        \n\n**Example Error Responses:**\n\n``` json\n{ \"error\": \"Invalid or missing api_key\" }\n{ \"error\": \"Invalid signature\" }\n\n ```\n\nEnsure all required headers and parameters are included and the signature is correctly generated to successfully retrieve project information."
          },
          "response": [
            {
              "name": "invalid secret",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Authorization",
                    "value": "Bearer {{vault:json-web-token}}",
                    "type": "text",
                    "disabled": true
                  },
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "{{V.cloud}}/api/v4/projects/get_project?project_id={{projectId}}",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "projects",
                    "get_project"
                  ],
                  "query": [
                    {
                      "key": "project_id",
                      "value": "{{projectId}}"
                    }
                  ]
                }
              },
              "status": "UNAUTHORIZED",
              "code": 401,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Server",
                  "value": "Werkzeug/3.1.3 Python/3.9.13"
                },
                {
                  "key": "Date",
                  "value": "Sun, 16 Nov 2025 14:10:52 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "30"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Connection",
                  "value": "close"
                }
              ],
              "cookie": [],
              "body": "{\n    \"error\": \"Invalid signature\"\n}"
            },
            {
              "name": "get_sucess",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Authorization",
                    "value": "Bearer {{vault:json-web-token}}",
                    "type": "text",
                    "disabled": true
                  },
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "{{V.cloud}}/api/v4/projects/get_project?project_id={{projectId}}",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "projects",
                    "get_project"
                  ],
                  "query": [
                    {
                      "key": "project_id",
                      "value": "{{projectId}}"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Server",
                  "value": "Werkzeug/3.1.3 Python/3.9.13"
                },
                {
                  "key": "Date",
                  "value": "Sun, 16 Nov 2025 14:11:42 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "1661"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Connection",
                  "value": "close"
                }
              ],
              "cookie": [],
              "body": "{\n    \"project\": {\n        \"balance\": \"2000.00\",\n        \"organization\": \"Try123\",\n        \"projects\": [\n            {\n                \"api_key\": \"658de993-69ca-4218-8087-60c99ad77065\",\n                \"default_lock_settings\": {\n                    \"lock_chat\": false,\n                    \"lock_chat_file_share\": false,\n                    \"lock_chat_send_message\": false,\n                    \"lock_microphone\": false,\n                    \"lock_private_chat\": false,\n                    \"lock_screen_sharing\": false,\n                    \"lock_shared_notepad\": false,\n                    \"lock_webcam\": false,\n                    \"lock_whiteboard\": false\n                },\n                \"domain\": \"https://vcloud-dev.dragonteam.dev\",\n                \"extra_data\": {},\n                \"id\": \"fa504cd1-86ab-48f1-9793-4b59a5015691\",\n                \"limits\": null,\n                \"logout_url\": \"https://www.gooogle.com/\",\n                \"name\": \"tr221y33\",\n                \"room_features\": [\n                    {\n                        \"General_Room_Settings\": {\n                            \"allow_screen_share\": true,\n                            \"allow_webcams\": false,\n                            \"allowed_number_rooms\": 2,\n                            \"allowed_rooms\": false,\n                            \"auto_gen_user_id\": false,\n                            \"mute_on_start\": false,\n                            \"room_duration\": 0,\n                            \"waiting_room_features\": false\n                        },\n                        \"additional_features\": {\n                            \"allow_rtmp\": false,\n                            \"allowed_external_media_player\": false,\n                            \"display_external_link_features\": false,\n                            \"end_to_end_encryption_features\": false,\n                            \"ingress_features\": false,\n                            \"speach_to_text_and_translate_features\": {\n                                \"is_allow\": false,\n                                \"is_allow_translation\": false\n                            }\n                        },\n                        \"admin_permission\": {\n                            \"admin_only_webcams\": false,\n                            \"allow_raise_hand\": false,\n                            \"allow_view_other_users_list\": false,\n                            \"allow_view_other_webcams\": false\n                        },\n                        \"interactive_tools\": {\n                            \"allow_chat_and_file\": {\n                                \"allow_chat\": false,\n                                \"allow_file_upload\": false\n                            },\n                            \"allow_polls\": false,\n                            \"allow_virtual_bg\": false,\n                            \"allowed_whiteboard\": false,\n                            \"enable_analytics\": true,\n                            \"shared_note_pad_features\": false\n                        },\n                        \"recording_features\": {\n                            \"enable_auto_cloud_recording\": false,\n                            \"is_allow_cloud\": false,\n                            \"is_allow_local\": false,\n                            \"recording_allow\": false\n                        }\n                    }\n                ],\n                \"secret_key\": \"a1e598f9-70f2-4a4a-842b-b8bf0224a7b2\",\n                \"status\": \"active\",\n                \"webhook_url\": \"https://www.google.com\"\n            }\n        ]\n    }\n}"
            },
            {
              "name": "invali api key",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Authorization",
                    "value": "Bearer {{vault:json-web-token}}",
                    "type": "text",
                    "disabled": true
                  },
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "{{V.cloud}}/api/v4/projects/get_project?project_id={{projectId}}",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "projects",
                    "get_project"
                  ],
                  "query": [
                    {
                      "key": "project_id",
                      "value": "{{projectId}}"
                    }
                  ]
                }
              },
              "status": "UNAUTHORIZED",
              "code": 401,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Server",
                  "value": "Werkzeug/3.1.3 Python/3.9.13"
                },
                {
                  "key": "Date",
                  "value": "Sun, 16 Nov 2025 14:12:11 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "39"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Connection",
                  "value": "close"
                }
              ],
              "cookie": [],
              "body": "{\n    \"error\": \"Invalid or missing api_key\"\n}"
            }
          ]
        },
        {
          "name": "update_project",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "let rawMessage;\r",
                  "\r",
                  "if (pm.request.method === \"GET\" || pm.request.method === \"DELETE\") {\r",
                  "    // Get the full path with query string\r",
                  "    rawMessage = pm.request.url.getPathWithQuery();\r",
                  "    \r",
                  "    // Resolve all {{variable}} patterns in the URL\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        // Try to get variable from different scopes\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match; // Keep original if not found\r",
                  "    });\r",
                  "} else {\r",
                  "    // Get raw body\r",
                  "    rawMessage = pm.request.body.raw;\r",
                  "    \r",
                  "    // Resolve variables in body too\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match;\r",
                  "    });\r",
                  "}\r",
                  "\r",
                  "// Normalize: replace CRLF with LF and trim\r",
                  "rawMessage = rawMessage.replace(/\\r\\n/g, '\\n').trim();\r",
                  "\r",
                  "console.log(\"Raw Message to be signed:\", rawMessage);\r",
                  "console.log(\"Message length:\", rawMessage.length);\r",
                  "\r",
                  "const secret = '5aa9391b-bcb9-476f-9477-33f48eec7fad';\r",
                  "\r",
                  "// Generate HMAC SHA256 and encode as Base64\r",
                  "const hash = CryptoJS.HmacSHA256(rawMessage, secret).toString(CryptoJS.enc.Base64);\r",
                  "\r",
                  "pm.request.headers.upsert({ key: \"hash-signature\", value: hash });\r",
                  "\r",
                  "console.log(\"Generated HMAC:\", hash);\r",
                  "console.log(\"Resolved message:\", rawMessage);\r",
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            },
            {
              "listen": "test",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            }
          ],
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "key",
                "value": "{{key}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n\"default_project\":true,\n \"webhook_url\":\"https://www.google.com\",\n \"logout_url\":\"https://www.gooogle.com/\",\n \"room_features\": [\n                    {\n                        \"General_Room_Settings\": {\n                            \"allow_screen_share\": true,\n                            \"allow_webcams\": false,\n                            \"allowed_number_rooms\": 2,\n                            \"allowed_rooms\": false,\n                            \"auto_gen_user_id\": false,\n                            \"mute_on_start\": false,\n                            \"room_duration\": 0,\n                            \"waiting_room_features\": false\n                        },\n                        \"additional_features\": {\n                            \"allowed_external_media_player\": false,\n                            \"display_external_link_features\": false,\n                            \"end_to_end_encryption_features\": false,\n                            \"ingress_features\": false,\n                            \"speach_to_text_and_translate_features\": {\n                                \"is_allow\": false,\n                                \"is_allow_translation\": false\n                            }\n                        },\n                        \"admin_permission\": {\n                            \"admin_only_webcams\": false,\n                            \"allow_raise_hand\": false,\n                            \"allow_view_other_users_list\": false,\n                            \"allow_view_other_webcams\": false\n                        },\n                        \"interactive_tools\": {\n                            \"allow_chat_and_file\": {\n                                \"allow_chat\": false,\n                                \"allow_file_upload\": false\n                            },\n                            \"allow_polls\": false,\n                            \"allow_virtual_bg\": false,\n                            \"allowed_whiteboard\": false,\n                            \"enable_analytics\": false,\n                            \"shared_note_pad_features\": false\n                        },\n                        \"recording_features\": {\n                            \"enable_auto_cloud_recording\": false,\n                            \"is_allow_cloud\": false,\n                            \"is_allow_local\": false,\n                            \"recording_allow\": false\n                        }\n                    }]\n                ,\n  \"default_lock_settings\": {\n      \"lock_microphone\": false,\n      \"lock_webcam\": false,\n      \"lock_screen_sharing\": false,\n      \"lock_whiteboard\": false,\n      \"lock_shared_notepad\": false,\n      \"lock_chat\": false,\n      \"lock_chat_send_message\": false,\n      \"lock_chat_file_share\": false,\n      \"lock_private_chat\": false\n    }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{V.cloud}}/api/v4/projects/update_project/{{projectId}}",
              "host": [
                "{{V.cloud}}"
              ],
              "path": [
                "api",
                "v4",
                "projects",
                "update_project",
                "{{projectId}}"
              ]
            },
            "description": "**Update Project**\n\nThis endpoint updates the configuration and settings of an existing project in the system. Use this endpoint to modify project-level defaults, webhook URLs, logout URLs, room features, and lock settings.\n\n**Authentication:**\n\n- Requires an API key provided in the `key` header. Example: `key: {{key}}`\n    \n- The request must be signed with an HMAC SHA256 signature in the `hash-signature` header (see pre-request script for details).\n    \n\n**Request URL:**  \n`PUT {{V.cloud}}/api/v3/projects/update_project/{{projectId}}`\n\n- `projectId` (path variable): The unique identifier of the project to update.\n    \n\n**Request Body:** (JSON, `raw`)\n\n| Field Name | Type | Required | Description |\n| --- | --- | --- | --- |\n| `default_project` | boolean | NO | Set to `true` to mark this as the default project. |\n| `webhook_url` | string | Yes | The URL to which webhook events will be sent. |\n| `logout_url` | string | No | The URL to redirect users after logout. |\n| `room_features` | array of objects | No | List of room feature objects. Each object includes the following nested fields: |\n| `General_Room_Settings` | object | No | General settings for rooms: |\n| `allow_screen_share` | boolean | No | Allow screen sharing in rooms. |\n| `allow_webcams` | boolean | No | Allow webcams in rooms. |\n| `allowed_number_rooms` | integer | No | Maximum number of allowed rooms. |\n| `allowed_rooms` | boolean | No | Whether rooms are allowed. |\n| `auto_gen_user_id` | boolean | No | Auto-generate user IDs. |\n| `mute_on_start` | boolean | No | Mute participants on start. |\n| `room_duration` | integer | No | Duration of the room in minutes. |\n| `waiting_room_features` | boolean | No | Enable waiting room features. |\n| `additional_features` | object | No | Additional room features: |\n| `allowed_external_media_player` | boolean | No | Allow external media player. |\n| `display_external_link_features` | boolean | No | Display external link features. |\n| `end_to_end_encryption_features` | boolean | No | Enable end-to-end encryption. |\n| `ingress_features` | boolean | No | Enable ingress features. |\n| `speach_to_text_and_translate_features` | object | No | Speech-to-text and translation features: |\n| `is_allow` | boolean | No | Allow speech-to-text. |\n| `is_allow_translation` | boolean | No | Allow translation. |\n| `admin_permission` | object | No | Admin permissions: |\n| `admin_only_webcams` | boolean | No | Only admins can use webcams. |\n| `allow_raise_hand` | boolean | No | Allow raise hand feature. |\n| `allow_view_other_users_list` | boolean | No | Allow viewing other users. |\n| `allow_view_other_webcams` | boolean | No | Allow viewing other webcams. |\n| `interactive_tools` | object | No | Interactive tools: |\n| `allow_chat_and_file` | object | No | Chat and file upload options: |\n| `allow_chat` | boolean | No | Allow chat. |\n| `allow_file_upload` | boolean | No | Allow file upload. |\n| `allow_polls` | boolean | No | Allow polls. |\n| `allow_virtual_bg` | boolean | No | Allow virtual backgrounds. |\n| `allowed_whiteboard` | boolean | No | Allow whiteboard. |\n| `enable_analytics` | boolean | No | Enable analytics. |\n| `shared_note_pad_features` | boolean | No | Enable shared notepad. |\n| `recording_features` | object | No | Recording features: |\n| `enable_auto_cloud_recording` | boolean | No | Enable auto cloud recording. |\n| `is_allow_cloud` | boolean | No | Allow cloud recording. |\n| `is_allow_local` | boolean | No | Allow local recording. |\n| `recording_allow` | boolean | No | Allow recording. |\n| `default_lock_settings` | object | Yes | Default lock settings for the project. Fields include: |\n| `lock_microphone` | boolean | Yes | Indicates if microphones are locked. **Must be a boolean.** |\n| `lock_webcam` | boolean | No | Indicates if webcams are locked. |\n| `lock_screen_sharing` | boolean | No | Indicates if screen sharing is locked. |\n| `lock_whiteboard` | boolean | No | Indicates if whiteboard is locked. |\n| `lock_shared_notepad` | boolean | No | Indicates if shared notepad is locked. |\n| `lock_chat` | boolean | No | Indicates if chat is locked. |\n| `lock_chat_send_message` | boolean | No | Indicates if sending chat messages is locked. |\n| `lock_chat_file_share` | boolean | No | Indicates if file sharing in chat is locked. |\n| `lock_private_chat` | boolean | No | Indicates if private chat is locked. |\n\n**Notes:**\n\n- All boolean fields must be set to `true` or `false`. For example, `lock_microphone` must not be a string or any other type.\n    \n- Ensure all required fields are present in the request body.\n    \n\n**Possible Responses:**\n\n- `200 OK`: Project updated successfully. See the \"update_project success\" example for a typical response.\n    \n- `400 Bad Request`: Validation error. For example, if `lock_microphone` is not a boolean, the response will include: `{ \"errors\": { \"lock_microphone\": \"Must be a bool\" } }`\n    \n- `401 Unauthorized`: Invalid or missing API key.\n    \n- `403 Forbidden`: Invalid signature or insufficient permissions.\n    \n\n**Examples:**\n\n- See the saved examples \"update_project success\" and \"invalid api key\" for sample requests and responses."
          },
          "response": [
            {
              "name": "invalid api key",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "",
                    "value": "",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n\"default_project\":true,\n \"webhook_url\":\"https://www.google.com\",\n \"logout_url\":\"https://www.gooogle.com/\",\n \"room_features\": [\n                    {\n                        \"General_Room_Settings\": {\n                            \"allow_screen_share\": false,\n                            \"allow_webcams\": false,\n                            \"allowed_number_rooms\": 2,\n                            \"allowed_rooms\": false,\n                            \"auto_gen_user_id\": false,\n                            \"mute_on_start\": false,\n                            \"room_duration\": 0,\n                            \"waiting_room_features\": false\n                        },\n                        \"additional_features\": {\n                            \"allowed_external_media_player\": false,\n                            \"display_external_link_features\": false,\n                            \"end_to_end_encryption_features\": false,\n                            \"ingress_features\": false,\n                            \"speach_to_text_and_translate_features\": {\n                                \"is_allow\": false,\n                                \"is_allow_translation\": false\n                            }\n                        },\n                        \"admin_permission\": {\n                            \"admin_only_webcams\": false,\n                            \"allow_raise_hand\": false,\n                            \"allow_view_other_users_list\": false,\n                            \"allow_view_other_webcams\": false\n                        },\n                        \"interactive_tools\": {\n                            \"allow_chat_and_file\": {\n                                \"allow_chat\": false,\n                                \"allow_file_upload\": false\n                            },\n                            \"allow_polls\": false,\n                            \"allow_virtual_bg\": false,\n                            \"allowed_whiteboard\": false,\n                            \"enable_analytics\": false,\n                            \"shared_note_pad_features\": false\n                        },\n                        \"recording_features\": {\n                            \"enable_auto_cloud_recording\": false,\n                            \"is_allow_cloud\": false,\n                            \"is_allow_local\": false,\n                            \"recording_allow\": false\n                        }\n                    }\n                ],\n  \"default_lock_settings\": {\n      \"lock_microphone\": false,\n      \"lock_webcam\": false,\n      \"lock_screen_sharing\": false,\n      \"lock_whiteboard\": false,\n      \"lock_shared_notepad\": false,\n      \"lock_chat\": false,\n      \"lock_chat_send_message\": false,\n      \"lock_chat_file_share\": false,\n      \"lock_private_chat\": false\n    }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/projects/update_project/{{projectId}}",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "projects",
                    "update_project",
                    "{{projectId}}"
                  ]
                }
              },
              "status": "UNAUTHORIZED",
              "code": 401,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Date",
                  "value": "Sun, 16 Nov 2025 07:54:54 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "39"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000; includeSubDomains"
                }
              ],
              "cookie": [],
              "body": "{\n    \"error\": \"Invalid or missing api_key\"\n}"
            },
            {
              "name": "invalid secret key or data",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n\"default_project\":true,\n \"webhook_url\":\"https://www.google.com\",\n \"logout_url\":\"https://www.gooogle.com/\",\n \"room_features\": [\n                    {\n                        \"General_Room_Settings\": {\n                            \"allow_screen_share\": false,\n                            \"allow_webcams\": false,\n                            \"allowed_number_rooms\": 2,\n                            \"allowed_rooms\": false,\n                            \"auto_gen_user_id\": false,\n                            \"mute_on_start\": false,\n                            \"room_duration\": 0,\n                            \"waiting_room_features\": false\n                        },\n                        \"additional_features\": {\n                            \"allowed_external_media_player\": false,\n                            \"display_external_link_features\": false,\n                            \"end_to_end_encryption_features\": false,\n                            \"ingress_features\": false,\n                            \"speach_to_text_and_translate_features\": {\n                                \"is_allow\": false,\n                                \"is_allow_translation\": false\n                            }\n                        },\n                        \"admin_permission\": {\n                            \"admin_only_webcams\": false,\n                            \"allow_raise_hand\": false,\n                            \"allow_view_other_users_list\": false,\n                            \"allow_view_other_webcams\": false\n                        },\n                        \"interactive_tools\": {\n                            \"allow_chat_and_file\": {\n                                \"allow_chat\": false,\n                                \"allow_file_upload\": false\n                            },\n                            \"allow_polls\": false,\n                            \"allow_virtual_bg\": false,\n                            \"allowed_whiteboard\": false,\n                            \"enable_analytics\": false,\n                            \"shared_note_pad_features\": false\n                        },\n                        \"recording_features\": {\n                            \"enable_auto_cloud_recording\": false,\n                            \"is_allow_cloud\": false,\n                            \"is_allow_local\": false,\n                            \"recording_allow\": false\n                        }\n                    }\n                ],\n  \"default_lock_settings\": {\n      \"lock_microphone\": false,\n      \"lock_webcam\": false,\n      \"lock_screen_sharing\": false,\n      \"lock_whiteboard\": false,\n      \"lock_shared_notepad\": false,\n      \"lock_chat\": false,\n      \"lock_chat_send_message\": false,\n      \"lock_chat_file_share\": false,\n      \"lock_private_chat\": false\n    }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/projects/update_project/{{projectId}}",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "projects",
                    "update_project",
                    "{{projectId}}"
                  ]
                }
              },
              "status": "UNAUTHORIZED",
              "code": 401,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Date",
                  "value": "Sun, 16 Nov 2025 08:08:13 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "30"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000; includeSubDomains"
                }
              ],
              "cookie": [],
              "body": "{\n    \"error\": \"Invalid signature\"\n}"
            },
            {
              "name": "update_project sucess",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n\"default_project\":true,\n \"webhook_url\":\"https://www.google.com\",\n \"logout_url\":\"https://www.gooogle.com/\",\n \"room_features\": [\n                    {\n                        \"General_Room_Settings\": {\n                            \"allow_screen_share\": false,\n                            \"allow_webcams\": false,\n                            \"allowed_number_rooms\": 2,\n                            \"allowed_rooms\": false,\n                            \"auto_gen_user_id\": false,\n                            \"mute_on_start\": false,\n                            \"room_duration\": 0,\n                            \"waiting_room_features\": false\n                        },\n                        \"additional_features\": {\n                            \"allowed_external_media_player\": false,\n                            \"display_external_link_features\": false,\n                            \"end_to_end_encryption_features\": false,\n                            \"ingress_features\": false,\n                            \"speach_to_text_and_translate_features\": {\n                                \"is_allow\": false,\n                                \"is_allow_translation\": false\n                            }\n                        },\n                        \"admin_permission\": {\n                            \"admin_only_webcams\": false,\n                            \"allow_raise_hand\": false,\n                            \"allow_view_other_users_list\": false,\n                            \"allow_view_other_webcams\": false\n                        },\n                        \"interactive_tools\": {\n                            \"allow_chat_and_file\": {\n                                \"allow_chat\": false,\n                                \"allow_file_upload\": false\n                            },\n                            \"allow_polls\": false,\n                            \"allow_virtual_bg\": false,\n                            \"allowed_whiteboard\": false,\n                            \"enable_analytics\": false,\n                            \"shared_note_pad_features\": false\n                        },\n                        \"recording_features\": {\n                            \"enable_auto_cloud_recording\": false,\n                            \"is_allow_cloud\": false,\n                            \"is_allow_local\": false,\n                            \"recording_allow\": false\n                        }\n                    }\n                ],\n  \"default_lock_settings\": {\n      \"lock_microphone\": false,\n      \"lock_webcam\": false,\n      \"lock_screen_sharing\": false,\n      \"lock_whiteboard\": false,\n      \"lock_shared_notepad\": false,\n      \"lock_chat\": false,\n      \"lock_chat_send_message\": false,\n      \"lock_chat_file_share\": false,\n      \"lock_private_chat\": false\n    }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/projects/update_project/{{projectId}}",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "projects",
                    "update_project",
                    "{{projectId}}"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Date",
                  "value": "Sun, 16 Nov 2025 08:09:09 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "43"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000; includeSubDomains"
                }
              ],
              "cookie": [],
              "body": "{\n    \"message\": \"Project updated successfully\"\n}"
            },
            {
              "name": "invalid data",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n\"default_project\":true,\n \"webhook_url\":\"https://www.google.com\",\n \"logout_url\":\"https://www.gooogle.com/\",\n \"room_features\": [\n                    {\n                        \"General_Room_Settings\": {\n                            \"allow_screen_share\": sssfbgd,\n                            \"allow_webcams\": false,\n                            \"allowed_number_rooms\": 2,\n                            \"allowed_rooms\": false,\n                            \"auto_gen_user_id\": false,\n                            \"mute_on_start\": false,\n                            \"room_duration\": 0,\n                            \"waiting_room_features\": false\n                        },\n                        \"additional_features\": {\n                            \"allowed_external_media_player\": false,\n                            \"display_external_link_features\": false,\n                            \"end_to_end_encryption_features\": false,\n                            \"ingress_features\": false,\n                            \"speach_to_text_and_translate_features\": {\n                                \"is_allow\": false,\n                                \"is_allow_translation\": false\n                            }\n                        },\n                        \"admin_permission\": {\n                            \"admin_only_webcams\": false,\n                            \"allow_raise_hand\": false,\n                            \"allow_view_other_users_list\": false,\n                            \"allow_view_other_webcams\": false\n                        },\n                        \"interactive_tools\": {\n                            \"allow_chat_and_file\": {\n                                \"allow_chat\": false,\n                                \"allow_file_upload\": false\n                            },\n                            \"allow_polls\": false,\n                            \"allow_virtual_bg\": false,\n                            \"allowed_whiteboard\": false,\n                            \"enable_analytics\": false,\n                            \"shared_note_pad_features\": false\n                        },\n                        \"recording_features\": {\n                            \"enable_auto_cloud_recording\": false,\n                            \"is_allow_cloud\": false,\n                            \"is_allow_local\": false,\n                            \"recording_allow\": false\n                        }\n                    }\n                ],\n  \"default_lock_settings\": {\n      \"lock_microphone\": false,\n      \"lock_webcam\": false,\n      \"lock_screen_sharing\": false,\n      \"lock_whiteboard\": false,\n      \"lock_shared_notepad\": false,\n      \"lock_chat\": false,\n      \"lock_chat_send_message\": false,\n      \"lock_chat_file_share\": false,\n      \"lock_private_chat\": false\n    }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/projects/update_project/{{projectId}}",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "projects",
                    "update_project",
                    "{{projectId}}"
                  ]
                }
              },
              "status": "INTERNAL SERVER ERROR",
              "code": 500,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Date",
                  "value": "Sun, 16 Nov 2025 08:09:53 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "140"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000; includeSubDomains"
                }
              ],
              "cookie": [],
              "body": "{\n    \"error\": \"Internal Server Error\",\n    \"message\": \"400 Bad Request: The browser (or proxy) sent a request that this server could not understand.\"\n}"
            },
            {
              "name": "invalid data type",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n\"default_project\":true,\n \"webhook_url\":\"https://www.google.com\",\n \"logout_url\":\"https://www.gooogle.com/\",\n \"room_features\": [\n                    {\n                        \"General_Room_Settings\": {\n                            \"allow_screen_share\": true,\n                            \"allow_webcams\": false,\n                            \"allowed_number_rooms\": 2,\n                            \"allowed_rooms\": false,\n                            \"auto_gen_user_id\": false,\n                            \"mute_on_start\": false,\n                            \"room_duration\": 0,\n                            \"waiting_room_features\": false\n                        },\n                        \"additional_features\": {\n                            \"allowed_external_media_player\": false,\n                            \"display_external_link_features\": false,\n                            \"end_to_end_encryption_features\": false,\n                            \"ingress_features\": false,\n                            \"speach_to_text_and_translate_features\": {\n                                \"is_allow\": false,\n                                \"is_allow_translation\": false\n                            }\n                        },\n                        \"admin_permission\": {\n                            \"admin_only_webcams\": false,\n                            \"allow_raise_hand\": false,\n                            \"allow_view_other_users_list\": false,\n                            \"allow_view_other_webcams\": false\n                        },\n                        \"interactive_tools\": {\n                            \"allow_chat_and_file\": {\n                                \"allow_chat\": false,\n                                \"allow_file_upload\": false\n                            },\n                            \"allow_polls\": false,\n                            \"allow_virtual_bg\": false,\n                            \"allowed_whiteboard\": false,\n                            \"enable_analytics\": false,\n                            \"shared_note_pad_features\": false\n                        },\n                        \"recording_features\": {\n                            \"enable_auto_cloud_recording\": false,\n                            \"is_allow_cloud\": false,\n                            \"is_allow_local\": false,\n                            \"recording_allow\": false\n                        }\n                    }]\n                ,\n  \"default_lock_settings\": {\n      \"lock_microphone\": \"12er\",\n      \"lock_webcam\": false,\n      \"lock_screen_sharing\": false,\n      \"lock_whiteboard\": false,\n      \"lock_shared_notepad\": false,\n      \"lock_chat\": false,\n      \"lock_chat_send_message\": false,\n      \"lock_chat_file_share\": false,\n      \"lock_private_chat\": false\n    }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/projects/update_project/{{projectId}}",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "projects",
                    "update_project",
                    "{{projectId}}"
                  ]
                }
              },
              "status": "BAD REQUEST",
              "code": 400,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Server",
                  "value": "Werkzeug/3.1.3 Python/3.9.13"
                },
                {
                  "key": "Date",
                  "value": "Sun, 16 Nov 2025 14:04:36 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "48"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Connection",
                  "value": "close"
                }
              ],
              "cookie": [],
              "body": "{\n    \"errors\": {\n        \"lock_microphone\": \"Must be a bool\"\n    }\n}"
            }
          ]
        },
        {
          "name": "update_project_status",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "let rawMessage;\r",
                  "\r",
                  "if (pm.request.method === \"GET\" || pm.request.method === \"DELETE\") {\r",
                  "    // Get the full path with query string\r",
                  "    rawMessage = pm.request.url.getPathWithQuery();\r",
                  "    \r",
                  "    // Resolve all {{variable}} patterns in the URL\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        // Try to get variable from different scopes\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match; // Keep original if not found\r",
                  "    });\r",
                  "} else {\r",
                  "    // Get raw body\r",
                  "    rawMessage = pm.request.body.raw;\r",
                  "    \r",
                  "    // Resolve variables in body too\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match;\r",
                  "    });\r",
                  "}\r",
                  "\r",
                  "// Normalize: replace CRLF with LF and trim\r",
                  "rawMessage = rawMessage.replace(/\\r\\n/g, '\\n').trim();\r",
                  "\r",
                  "console.log(\"Raw Message to be signed:\", rawMessage);\r",
                  "console.log(\"Message length:\", rawMessage.length);\r",
                  "\r",
                  "const secret = 'd8138db0-a2c5-4bd9-b92f-f69d52b4fbb5';\r",
                  "\r",
                  "// Generate HMAC SHA256 and encode as Base64\r",
                  "const hash = CryptoJS.HmacSHA256(rawMessage, secret).toString(CryptoJS.enc.Base64);\r",
                  "\r",
                  "pm.request.headers.upsert({ key: \"hash-signature\", value: hash });\r",
                  "\r",
                  "console.log(\"Generated HMAC:\", hash);\r",
                  "console.log(\"Resolved message:\", rawMessage);\r",
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            }
          ],
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "key",
                "value": "{{key}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"status\":\"ive\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{V.cloud}}/api/v4/projects/update_project_status?project_id={{projectId}}",
              "host": [
                "{{V.cloud}}"
              ],
              "path": [
                "api",
                "v4",
                "projects",
                "update_project_status"
              ],
              "query": [
                {
                  "key": "project_id",
                  "value": "{{projectId}}"
                },
                {
                  "key": "key",
                  "value": "{{key}}",
                  "disabled": true
                }
              ]
            },
            "description": "**Purpose:**  \nUpdates the status of a specific project in the V.cloud system.\n\n**Endpoint:**  \nPUT {{V.cloud}}/api/v4/projects/update_project_status?project_id={{projectId}}\n\n**Required Parameters:**\n\n- `project_id` (query param, required): The unique identifier of the project to update.\n    \n- `status` (body, required): The new status to assign to the project. Must be a valid status value accepted by the API.\n    \n\n**Request Body Example:**\n\n``` json\n{\n  \"status\": \"<new_status>\"\n}\n\n ```\n\n**Headers:**\n\n- `key`: Your API key (required for authentication)\n    \n- `hash-signature`: HMAC SHA256 signature of the request body, generated using your secret key (see pre-request script for details)\n    \n\n**Authentication:**\n\n- Requires a valid API key and a correctly generated HMAC signature in the `hash-signature` header.\n    \n\n**Possible Responses:**\n\n- `200 OK`: Project status updated successfully. Returns updated project details.\n    \n- `400 Bad Request`: Invalid status or missing/incorrect parameters. Example: `{ \"message\": \"Invalid status\", \"status\": \"error\" }`\n    \n- `401 Unauthorized`: Invalid or missing API key or signature.\n    \n- `404 Not Found`: Project with the specified ID does not exist.\n    \n- `500 Internal Server Error`: Unexpected server error.\n    \n\n**Notes:**\n\n- Ensure the `status` value is valid as per your project's allowed statuses.\n    \n- The pre-request script automatically generates the required `hash-signature` header."
          },
          "response": [
            {
              "name": "update_project_status",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n    \"status\":\"inactive\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/projects/update_project_status?project_id={{projectId}}",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "projects",
                    "update_project_status"
                  ],
                  "query": [
                    {
                      "key": "project_id",
                      "value": "{{projectId}}"
                    },
                    {
                      "key": "key",
                      "value": "{{key}}",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Server",
                  "value": "Werkzeug/3.1.3 Python/3.9.13"
                },
                {
                  "key": "Date",
                  "value": "Sun, 16 Nov 2025 14:20:36 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "69"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Connection",
                  "value": "close"
                }
              ],
              "cookie": [],
              "body": "{\n    \"message\": \"project status updated successfully\",\n    \"status\": \"success\"\n}"
            },
            {
              "name": "invalid status",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n    \"status\":\"ive\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/projects/update_project_status?project_id={{projectId}}",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "projects",
                    "update_project_status"
                  ],
                  "query": [
                    {
                      "key": "project_id",
                      "value": "{{projectId}}"
                    },
                    {
                      "key": "key",
                      "value": "{{key}}",
                      "disabled": true
                    }
                  ]
                }
              },
              "status": "BAD REQUEST",
              "code": 400,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Server",
                  "value": "Werkzeug/3.1.3 Python/3.9.13"
                },
                {
                  "key": "Date",
                  "value": "Sun, 16 Nov 2025 14:20:55 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "46"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Connection",
                  "value": "close"
                }
              ],
              "cookie": [],
              "body": "{\n    \"message\": \"Invalid status\",\n    \"status\": \"error\"\n}"
            }
          ]
        },
        {
          "name": "get_all_projects",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "let rawMessage;\r",
                  "\r",
                  "if (pm.request.method === \"GET\" || pm.request.method === \"DELETE\") {\r",
                  "    // Get the full path with query string\r",
                  "    rawMessage = pm.request.url.getPathWithQuery();\r",
                  "    \r",
                  "    // Resolve all {{variable}} patterns in the URL\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        // Try to get variable from different scopes\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match; // Keep original if not found\r",
                  "    });\r",
                  "} else {\r",
                  "    // Get raw body\r",
                  "    rawMessage = pm.request.body.raw;\r",
                  "    \r",
                  "    // Resolve variables in body too\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match;\r",
                  "    });\r",
                  "}\r",
                  "\r",
                  "// Normalize: replace CRLF with LF and trim\r",
                  "rawMessage = rawMessage.replace(/\\r\\n/g, '\\n').trim();\r",
                  "\r",
                  "console.log(\"Raw Message to be signed:\", rawMessage);\r",
                  "console.log(\"Message length:\", rawMessage.length);\r",
                  "\r",
                  "const secret = '5aa9391b-bcb9-476f-9477-33f48eec7fad';\r",
                  "\r",
                  "// Generate HMAC SHA256 and encode as Base64\r",
                  "const hash = CryptoJS.HmacSHA256(rawMessage, secret).toString(CryptoJS.enc.Base64);\r",
                  "\r",
                  "pm.request.headers.upsert({ key: \"hash-signature\", value: hash });\r",
                  "\r",
                  "console.log(\"Generated HMAC:\", hash);\r",
                  "console.log(\"Resolved message:\", rawMessage);\r",
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "key",
                "value": "{{key}}",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{V.cloud}}/api/v4/projects/get_projects?organization_id={{organization_id}}",
              "host": [
                "{{V.cloud}}"
              ],
              "path": [
                "api",
                "v4",
                "projects",
                "get_projects"
              ],
              "query": [
                {
                  "key": "organization_id",
                  "value": "{{organization_id}}"
                }
              ]
            },
            "description": "**Get All Projects**\n\nThis endpoint retrieves a list of all projects associated with a specific organization in V.cloud. It is useful for administrators and users who need to view or manage projects within their organization.\n\n---\n\n### HTTP Method\n\n`GET`\n\n### Request URL\n\n`{{V.cloud}}/api/v3/projects/get_projects?organization_id={{organization_id}}`\n\n---\n\n### Required Parameters\n\n- **organization_id** (query parameter): The unique identifier of the organization whose projects you want to retrieve. This must be provided as a query parameter.\n    \n\n### Headers\n\n- **key**: Your API key for authentication. This should be included in the request headers.\n    \n- **hash-signature**: An HMAC SHA256 signature generated from the request path and query string, using your secret key. This is automatically handled by the pre-request script.\n    \n\n---\n\n### Authentication\n\nThis endpoint requires API key authentication. The `key` header must be set to a valid API key. Additionally, a `hash-signature` header is required for enhanced security, which is generated using your secret key and the request details.\n\n---\n\n### Pre-request Script\n\nA pre-request script is included to automatically generate the `hash-signature` header. Ensure your environment or collection variables are set for `key`, `V.cloud`, and `organization_id`.\n\n---\n\n### Example Response\n\nA successful response returns a JSON object containing the organization name and an array of project objects. Each project object includes details such as `api_key`, `created_date`, `domain`, `id`, `name`, `secret_key`, and `status`.\n\n#### Example:\n\n``` json\n{\n  \"organization\": \"Try123\",\n  \"projects\": [\n    {\n      \"api_key\": \"bc9bd5f7-13a9-452c-925e-e3a5c9a54e81\",\n      \"created_date\": \"Thu, 13 Nov 2025 13:01:18 GMT\",\n      \"default_project\": false,\n      \"domain\": \"https://vcloud-dev.dragonteam.dev\",\n      \"domains_list\": [],\n      \"id\": \"0117a3c3-ea99-4929-b63e-871e01e7b8ca\",\n      \"name\": \"try3\",\n      \"secret_key\": \"d6bbadf7-fbf6-44b9-9e7b-cb4a49c5ea0a\",\n      \"status\": \"active\"\n    },\n    ...\n  ]\n}\n\n ```\n\n---\n\n### Notes\n\n- Only users with valid API keys and secret keys can access this endpoint.\n    \n- The response includes all projects for the specified organization, regardless of their status (active/inactive).\n    \n- Make sure to keep your API key and secret key secure.\n    \n\nFor more information, refer to the collection documentation or contact your V.cloud administrator."
          },
          "response": [
            {
              "name": "invalid secret key",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "{{V.cloud}}/api/v4/projects/get_projects?organization_id={{organization_id}}",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "projects",
                    "get_projects"
                  ],
                  "query": [
                    {
                      "key": "organization_id",
                      "value": "{{organization_id}}"
                    }
                  ]
                }
              },
              "status": "UNAUTHORIZED",
              "code": 401,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Server",
                  "value": "Werkzeug/3.1.3 Python/3.9.13"
                },
                {
                  "key": "Date",
                  "value": "Sun, 16 Nov 2025 14:17:50 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "30"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Connection",
                  "value": "close"
                }
              ],
              "cookie": [],
              "body": "{\n    \"error\": \"Invalid signature\"\n}"
            },
            {
              "name": "get_all_projects",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "{{V.cloud}}/api/v4/projects/get_projects?organization_id={{organization_id}}",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "projects",
                    "get_projects"
                  ],
                  "query": [
                    {
                      "key": "organization_id",
                      "value": "{{organization_id}}"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Server",
                  "value": "Werkzeug/3.1.3 Python/3.9.13"
                },
                {
                  "key": "Date",
                  "value": "Sun, 16 Nov 2025 14:18:16 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "7605"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Connection",
                  "value": "close"
                }
              ],
              "cookie": [],
              "body": "{\n    \"organization\": \"Try123\",\n    \"projects\": [\n        {\n            \"api_key\": \"bc9bd5f7-13a9-452c-925e-e3a5c9a54e81\",\n            \"created_date\": \"Thu, 13 Nov 2025 13:01:18 GMT\",\n            \"default_project\": false,\n            \"domain\": \"https://vcloud-dev.dragonteam.dev\",\n            \"domains_list\": [],\n            \"id\": \"0117a3c3-ea99-4929-b63e-871e01e7b8ca\",\n            \"name\": \"try3\",\n            \"secret_key\": \"d6bbadf7-fbf6-44b9-9e7b-cb4a49c5ea0a\",\n            \"status\": \"active\"\n        },\n        {\n            \"api_key\": \"bd877fd3-0d75-4e7b-bb68-d78987eafbd1\",\n            \"created_date\": \"Sun, 16 Nov 2025 12:57:37 GMT\",\n            \"default_project\": false,\n            \"domain\": \"https://vcloud-dev.dragonteam.dev\",\n            \"domains_list\": [],\n            \"id\": \"0753e658-2753-4d11-8b0e-399714281749\",\n            \"name\": \"try1233\",\n            \"secret_key\": \"3c23265d-6795-4b2d-944b-b8f980b8b4ea\",\n            \"status\": \"active\"\n        },\n        {\n            \"api_key\": \"408a7e1d-935e-4f4e-9a59-2f53114c60a3\",\n            \"created_date\": \"Sun, 16 Nov 2025 12:58:28 GMT\",\n            \"default_project\": false,\n            \"domain\": \"https://vcloud-dev.dragonteam.dev\",\n            \"domains_list\": [],\n            \"id\": \"133e5a1f-b3aa-42b3-8985-1e70e15f895e\",\n            \"name\": \"sama3\",\n            \"secret_key\": \"af963586-5c8d-4b7d-9520-2546e684cd6e\",\n            \"status\": \"active\"\n        },\n        {\n            \"api_key\": \"7da7d1ac-234b-4c6e-bff1-f734d7a30785\",\n            \"created_date\": \"Wed, 12 Nov 2025 16:59:33 GMT\",\n            \"default_project\": false,\n            \"domain\": \"https://vcloud-dev.dragonteam.dev\",\n            \"domains_list\": [],\n            \"id\": \"222d475e-b6e3-486e-9205-a99eccfa732d\",\n            \"name\": \"Project\",\n            \"secret_key\": \"08bb8f5c-c0e2-4c92-a7bc-c78df21e4619\",\n            \"status\": \"active\"\n        },\n        {\n            \"api_key\": \"ab01c5a4-5764-4301-b25d-11a11a5e2743\",\n            \"created_date\": \"Thu, 13 Nov 2025 13:21:26 GMT\",\n            \"default_project\": false,\n            \"domain\": \"https://vcloud-dev.dragonteam.dev\",\n            \"domains_list\": [],\n            \"id\": \"2a61f861-21fc-4512-8226-89e35af91f0d\",\n            \"name\": \"tr221y33\",\n            \"secret_key\": \"228d8b7f-bea1-4ee1-8223-1f4ff3e7b803\",\n            \"status\": \"active\"\n        },\n        {\n            \"api_key\": \"159041e6-8f9d-4b87-a8ab-5e39b32ad7c3\",\n            \"created_date\": \"Thu, 13 Nov 2025 13:48:22 GMT\",\n            \"default_project\": false,\n            \"domain\": \"https://vcloud-dev.dragonteam.dev\",\n            \"domains_list\": [],\n            \"id\": \"2dd77f4a-fcb9-40b5-8270-3d6a12494298\",\n            \"name\": \"tr221y33\",\n            \"secret_key\": \"1a056ccb-0c24-45e9-adc0-2162b62b05be\",\n            \"status\": \"active\"\n        },\n        {\n            \"api_key\": \"db60747f-5f7d-42c9-82bb-9336e3cb2ab6\",\n            \"created_date\": \"Thu, 13 Nov 2025 13:10:33 GMT\",\n            \"default_project\": false,\n            \"domain\": \"https://vcloud-dev.dragonteam.dev\",\n            \"domains_list\": [],\n            \"id\": \"3fa901c7-d441-42e6-bc45-02354e943708\",\n            \"name\": \"tr22y33\",\n            \"secret_key\": \"f9fa8a21-4a48-46ec-b25f-8a1996f1ed23\",\n            \"status\": \"active\"\n        },\n        {\n            \"api_key\": \"0a028d12-a7fe-4d01-b2b5-f822018663be\",\n            \"created_date\": \"Sun, 16 Nov 2025 12:16:52 GMT\",\n            \"default_project\": false,\n            \"domain\": \"https://vcloud-dev.dragonteam.dev\",\n            \"domains_list\": [],\n            \"id\": \"478a927d-6125-4a8c-a736-f35b987f4b9a\",\n            \"name\": \"try1233\",\n            \"secret_key\": \"0457c7d7-59f6-47b2-a91c-2a29ed7e78ea\",\n            \"status\": \"active\"\n        },\n        {\n            \"api_key\": \"bf4987f7-17a9-4add-b86e-80d456bc080e\",\n            \"created_date\": \"Thu, 13 Nov 2025 13:47:55 GMT\",\n            \"default_project\": false,\n            \"domain\": \"https://vcloud-dev.dragonteam.dev\",\n            \"domains_list\": [],\n            \"id\": \"49d72226-4bab-42df-988b-f2ccc4bd95c4\",\n            \"name\": \"tr221y33\",\n            \"secret_key\": \"79f4a858-3a3e-4bd9-949d-6454f19b22fe\",\n            \"status\": \"inactive\"\n        },\n        {\n            \"api_key\": \"a353b2ba-76c4-4709-bb94-a4c2190ff3c7\",\n            \"created_date\": \"Thu, 13 Nov 2025 13:20:17 GMT\",\n            \"default_project\": false,\n            \"domain\": \"https://vcloud-dev.dragonteam.dev\",\n            \"domains_list\": [],\n            \"id\": \"75a0df68-34f5-442c-9dcb-cfb09418fd5b\",\n            \"name\": \"tr22y33\",\n            \"secret_key\": \"293114a3-4ad5-4483-aa96-b87cfa62bd99\",\n            \"status\": \"active\"\n        },\n        {\n            \"api_key\": \"6399f59b-3dd5-4aa3-bfa2-1f7f39d7a92f\",\n            \"created_date\": \"Sun, 16 Nov 2025 12:18:39 GMT\",\n            \"default_project\": false,\n            \"domain\": \"https://vcloud-dev.dragonteam.dev\",\n            \"domains_list\": [],\n            \"id\": \"9f46d0ac-402a-4af2-b67e-44d4bec5a5e6\",\n            \"name\": \"try1233\",\n            \"secret_key\": \"206c4939-5cea-4e2b-9fc5-9901a6b275a7\",\n            \"status\": \"active\"\n        },\n        {\n            \"api_key\": \"64d74ce0-7129-4e75-8572-64dedb25fda8\",\n            \"created_date\": \"Wed, 12 Nov 2025 17:00:31 GMT\",\n            \"default_project\": false,\n            \"domain\": \"https://vcloud-dev.dragonteam.dev\",\n            \"domains_list\": [],\n            \"id\": \"ab235e1f-8a2b-4c30-906f-987e7fe37cc6\",\n            \"name\": \"try3\",\n            \"secret_key\": \"2afcc131-d4a2-45e4-a447-2dec5e974ca1\",\n            \"status\": \"active\"\n        },\n        {\n            \"api_key\": \"686a9c5a-6c23-46cd-ac12-d2a90be48fd8\",\n            \"created_date\": \"Thu, 13 Nov 2025 13:10:02 GMT\",\n            \"default_project\": false,\n            \"domain\": \"https://vcloud-dev.dragonteam.dev\",\n            \"domains_list\": [],\n            \"id\": \"b0c825a0-cbc1-47bd-bd55-7c487a84473f\",\n            \"name\": \"try33\",\n            \"secret_key\": \"5ef510e8-eba5-4c1c-88a7-8e7d110a25bd\",\n            \"status\": \"active\"\n        },\n        {\n            \"api_key\": \"2c7a0e62-3e5c-469c-9230-a8f5255ede23\",\n            \"created_date\": \"Thu, 13 Nov 2025 13:01:03 GMT\",\n            \"default_project\": false,\n            \"domain\": \"https://vcloud-dev.dragonteam.dev\",\n            \"domains_list\": [],\n            \"id\": \"b2d0ca0e-7ebb-4d02-adb0-9c0f51e4e37f\",\n            \"name\": \"try3\",\n            \"secret_key\": \"9cdc106b-c6e5-41e2-86e0-3cfb6ca18b07\",\n            \"status\": \"active\"\n        },\n        {\n            \"api_key\": \"94b01d0c-e667-495a-9294-de8cda7847c6\",\n            \"created_date\": \"Thu, 13 Nov 2025 13:57:33 GMT\",\n            \"default_project\": false,\n            \"domain\": \"https://vcloud-dev.dragonteam.dev\",\n            \"domains_list\": [],\n            \"id\": \"ba9de110-98e3-4ac5-a364-904cdf406806\",\n            \"name\": \"tr221y33\",\n            \"secret_key\": \"64bee855-0403-4cba-8bbb-2f0a31406ed2\",\n            \"status\": \"active\"\n        },\n        {\n            \"api_key\": \"733e0cfc-c602-45e0-8ee5-18fb14698ca1\",\n            \"created_date\": \"Thu, 13 Nov 2025 14:01:26 GMT\",\n            \"default_project\": false,\n            \"domain\": \"https://vcloud-dev.dragonteam.dev\",\n            \"domains_list\": [],\n            \"id\": \"bddfda22-8b16-48ae-a352-3606d4fcecc8\",\n            \"name\": \"tr221y33\",\n            \"secret_key\": \"431b4260-5174-4308-9b59-22f18cc01ca4\",\n            \"status\": \"active\"\n        },\n        {\n            \"api_key\": \"142adf2a-3d6b-427f-8795-7551cbae94cd\",\n            \"created_date\": \"Sun, 16 Nov 2025 14:25:27 GMT\",\n            \"default_project\": false,\n            \"domain\": \"https://vcloud-dev.dragonteam.dev\",\n            \"domains_list\": [],\n            \"id\": \"be999ede-051f-48da-97d4-d3bc81fb0ca3\",\n            \"name\": \"sama3\",\n            \"secret_key\": \"9cfc35c2-2632-42a3-bcba-e0d2d6df4d9d\",\n            \"status\": \"active\"\n        },\n        {\n            \"api_key\": \"a89866a3-c2a4-4b99-946f-42cf9ecc781f\",\n            \"created_date\": \"Sun, 16 Nov 2025 14:11:45 GMT\",\n            \"default_project\": false,\n            \"domain\": \"https://vcloud-dev.dragonteam.dev\",\n            \"domains_list\": [],\n            \"id\": \"d8662edf-498d-4149-a2e1-3ac63aa6fd22\",\n            \"name\": \"sama3\",\n            \"secret_key\": \"dbc74fd9-af17-4ae2-b388-055953c5b9b8\",\n            \"status\": \"active\"\n        },\n        {\n            \"api_key\": \"06aac50f-33f4-42ac-af57-dd57259812cf\",\n            \"created_date\": \"Sun, 16 Nov 2025 13:57:11 GMT\",\n            \"default_project\": false,\n            \"domain\": \"https://vcloud-dev.dragonteam.dev\",\n            \"domains_list\": [],\n            \"id\": \"da0526e3-dc10-4e95-95ad-03f1fbe1886b\",\n            \"name\": \"sama3\",\n            \"secret_key\": \"527bb9d5-f430-4d98-a900-924ebd09cb14\",\n            \"status\": \"active\"\n        },\n        {\n            \"api_key\": \"02bcdac5-7daf-4811-b462-f2685e86f6f1\",\n            \"created_date\": \"Thu, 13 Nov 2025 13:50:16 GMT\",\n            \"default_project\": false,\n            \"domain\": \"https://vcloud-dev.dragonteam.dev\",\n            \"domains_list\": [],\n            \"id\": \"e06e901d-56be-42e5-8b34-0bd00d68b2c3\",\n            \"name\": \"tr221y33\",\n            \"secret_key\": \"a200c213-ee91-428d-a7ec-fdf7f720358d\",\n            \"status\": \"active\"\n        },\n        {\n            \"api_key\": \"23a6c53a-4c57-41cd-86ca-a26c9832c229\",\n            \"created_date\": \"Thu, 13 Nov 2025 12:58:05 GMT\",\n            \"default_project\": false,\n            \"domain\": \"https://vcloud-dev.dragonteam.dev\",\n            \"domains_list\": [],\n            \"id\": \"e24c2656-0ddf-4a42-849d-e562dfecf561\",\n            \"name\": \"try3\",\n            \"secret_key\": \"7cfc8365-1d07-4ea3-92b0-16a21062a89b\",\n            \"status\": \"active\"\n        },\n        {\n            \"api_key\": \"a31aba74-c883-4690-bbc8-ba4c27021b08\",\n            \"created_date\": \"Sun, 16 Nov 2025 14:12:05 GMT\",\n            \"default_project\": false,\n            \"domain\": \"https://vcloud-dev.dragonteam.dev\",\n            \"domains_list\": [],\n            \"id\": \"e3f53028-8cb4-49f7-8156-48d019363881\",\n            \"name\": \"sama3\",\n            \"secret_key\": \"a31fad5a-77d6-4d2c-98e1-423390750767\",\n            \"status\": \"active\"\n        },\n        {\n            \"api_key\": \"77ed0bdc-78f3-4528-91c7-22c185c16812\",\n            \"created_date\": \"Thu, 13 Nov 2025 14:23:10 GMT\",\n            \"default_project\": true,\n            \"domain\": \"https://vcloud-dev.dragonteam.dev\",\n            \"domains_list\": [],\n            \"id\": \"f7fbe4e8-58ec-4c2c-a0a6-862c0b5d4f1b\",\n            \"name\": \"try33\",\n            \"secret_key\": \"2cae3c50-b562-45ae-8011-e647e2d33ce8\",\n            \"status\": \"active\"\n        },\n        {\n            \"api_key\": \"658de993-69ca-4218-8087-60c99ad77065\",\n            \"created_date\": \"Thu, 13 Nov 2025 13:20:53 GMT\",\n            \"default_project\": false,\n            \"domain\": \"https://vcloud-dev.dragonteam.dev\",\n            \"domains_list\": [],\n            \"id\": \"fa504cd1-86ab-48f1-9793-4b59a5015691\",\n            \"name\": \"tr221y33\",\n            \"secret_key\": \"a1e598f9-70f2-4a4a-842b-b8bf0224a7b2\",\n            \"status\": \"active\"\n        }\n    ]\n}"
            }
          ]
        },
        {
          "name": "create_project",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            },
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "let rawMessage;\r",
                  "\r",
                  "if (pm.request.method === \"GET\" || pm.request.method === \"DELETE\") {\r",
                  "    // Get the full path with query string\r",
                  "    rawMessage = pm.request.url.getPathWithQuery();\r",
                  "    \r",
                  "    // Resolve all {{variable}} patterns in the URL\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        // Try to get variable from different scopes\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match; // Keep original if not found\r",
                  "    });\r",
                  "} else {\r",
                  "    // Get raw body\r",
                  "    rawMessage = pm.request.body.raw;\r",
                  "    \r",
                  "    // Resolve variables in body too\r",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {\r",
                  "        return pm.collectionVariables.get(varName) || \r",
                  "               pm.environment.get(varName) || \r",
                  "               pm.globals.get(varName) || \r",
                  "               pm.variables.get(varName) || \r",
                  "               match;\r",
                  "    });\r",
                  "}\r",
                  "\r",
                  "// Normalize: replace CRLF with LF and trim\r",
                  "rawMessage = rawMessage.replace(/\\r\\n/g, '\\n').trim();\r",
                  "\r",
                  "console.log(\"Raw Message to be signed:\", rawMessage);\r",
                  "console.log(\"Message length:\", rawMessage.length);\r",
                  "\r",
                  "const secret = 'd8138db0-a2c5-4bd9-b92f-f69d52b4fbb5';\r",
                  "\r",
                  "// Generate HMAC SHA256 and encode as Base64\r",
                  "const hash = CryptoJS.HmacSHA256(rawMessage, secret).toString(CryptoJS.enc.Base64);\r",
                  "\r",
                  "pm.request.headers.upsert({ key: \"hash-signature\", value: hash });\r",
                  "\r",
                  "console.log(\"Generated HMAC:\", hash);\r",
                  "console.log(\"Resolved message:\", rawMessage);\r",
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "key",
                "value": "{{key}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "\n{\n  \"organization_id\": \"{{organization_id}}\",\n  \"project_name\": \"sama_new_tool\",\n  \"default_project\": false,\n  \"limits\": {\n    \"max_active_rooms\": 10,\n    \"max_daily_rooms\": 20,\n    \"max_participants_per_room\": 1000,\n    \"max_api_calls_per_day\": 5000,\n    \"extra_config\": {\n      \"custom_feature_1\": true\n    }\n  }\n \n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{V.cloud}}/api/v4/projects/create_project",
              "host": [
                "{{V.cloud}}"
              ],
              "path": [
                "api",
                "v4",
                "projects",
                "create_project"
              ]
            },
            "description": "Creates a new project within a specified organization.\n\n**Endpoint:** `POST /api/v4/projects/create_project`\n\n**Purpose:**  \nCreates a new project for an organization. This is used to organize resources, rooms, and features under a project.\n\n**Authentication:**\n\n- Requires organization-level API key and secret:\n    \n    - `key`: API key (header, required)\n        \n    - `hash-signature`: HMAC SHA256 signature of the request body, using the organization's secret (header, required)\n        \n\n**Request Body (JSON):**\n\n| Field Name | Required | Type |\n| --- | --- | --- |\n| `organization_id` | Yes | string |\n| `project_name` | Yes | string |\n| `default_project` | No | boolean |\n| `limits` | No | object |\n| └─ `max_active_rooms` | No | integer |\n| └─ `max_daily_rooms` | No | integer |\n| └─ `max_participants_per_room` | No | integer |\n| └─ `max_api_calls_per_day` | No | integer |\n| └─ `extra_config` | No | object |\n| `webhook_url` | No | string |\n| `logout_url` | No | string |\n| `domain` | No | string |\n| `room_features` | No | object |\n| `default_lock_settings` | No | object |\n| `extra_data` | No | object |\n\n**Expected Responses:**\n\n- `200 OK`: Project created successfully. Returns project details.\n    \n- `400 Bad Request`: Missing or invalid parameters.\n    \n- `401 Unauthorized`: Invalid signature or authentication failure. Example: `{ \"error\": \"Invalid signature\" }`\n    \n- `409 Conflict`: Project with the same name already exists.\n    \n\n**Notes:**\n\n- All required fields must be provided in the request body.\n    \n- The `hash-signature` must be generated using the exact request body payload and the organization's secret.\n    \n- Use environment or collection variables for sensitive values like `organization_id` and `key`."
          },
          "response": [
            {
              "name": "project created sucess",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "\n{\n  \"organization_id\": \"{{organization_id}}\",\n  \"project_name\": \"try1233\",\n  \"default_project\": false,\n  \"limits\": {\n    \"max_active_rooms\": 10,\n    \"max_daily_rooms\": 20,\n    \"max_participants_per_room\": 100,\n    \"max_api_calls_per_day\": 5000,\n    \"extra_config\": {\n      \"custom_feature_1\": true\n    }\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/projects/create_project",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "projects",
                    "create_project"
                  ]
                }
              },
              "status": "CREATED",
              "code": 201,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Server",
                  "value": "Werkzeug/3.1.3 Python/3.9.13"
                },
                {
                  "key": "Date",
                  "value": "Sun, 16 Nov 2025 10:16:53 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "73"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Connection",
                  "value": "close"
                }
              ],
              "cookie": [],
              "body": "{\n    \"message\": \"Project and limits created successfully\",\n    \"status\": \"success\"\n}"
            },
            {
              "name": "Missing required fields",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "\n{\n  \"organization_id\": \"{{organization_id}}\",\n  \"default_project\": false,\n  \"limits\": {\n    \"max_active_rooms\": 10,\n    \"max_daily_rooms\": 20,\n    \"max_participants_per_room\": 100,\n    \"max_api_calls_per_day\": 5000,\n    \"extra_config\": {\n      \"custom_feature_1\": true\n    }\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/projects/create_project",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "projects",
                    "create_project"
                  ]
                }
              },
              "status": "BAD REQUEST",
              "code": 400,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Server",
                  "value": "Werkzeug/3.1.3 Python/3.9.13"
                },
                {
                  "key": "Date",
                  "value": "Sun, 16 Nov 2025 10:17:38 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "68"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Connection",
                  "value": "close"
                }
              ],
              "cookie": [],
              "body": "{\n    \"errors\": {\n        \"project_name\": \"The field 'project_name' is required.\"\n    }\n}"
            },
            {
              "name": "error in project limits validation",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "\n{\n  \"organization_id\": \"{{organization_id}}\",\n  \"project_name\": \"try1233\",\n  \"default_project\": false,\n  \"limits\": {\n    \"max_active_rooms\": -1,\n    \"max_daily_rooms\": 20,\n    \"max_participants_per_room\": 100,\n    \"max_api_calls_per_day\": 5000,\n    \"extra_config\": {\n      \"custom_feature_1\": true\n    }\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/projects/create_project",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "projects",
                    "create_project"
                  ]
                }
              },
              "status": "BAD REQUEST",
              "code": 400,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Server",
                  "value": "Werkzeug/3.1.3 Python/3.9.13"
                },
                {
                  "key": "Date",
                  "value": "Sun, 16 Nov 2025 10:18:39 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "133"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Connection",
                  "value": "close"
                }
              ],
              "cookie": [],
              "body": "{\n    \"errors\": {\n        \"max_active_rooms\": \"Value cannot be negative\"\n    },\n    \"message\": \"Project created, but failed to create limits\",\n    \"status\": \"error\"\n}"
            },
            {
              "name": "data type validation",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "\n{\n  \"organization_id\": \"{{organization_id}}\",\n  \"project_name\": 1,\n  \"default_project\": false,\n  \"limits\": {\n    \"max_active_rooms\": 10,\n    \"max_daily_rooms\": 20,\n    \"max_participants_per_room\": 100,\n    \"max_api_calls_per_day\": 5000,\n    \"extra_config\": {\n      \"custom_feature_1\": true\n    }\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/projects/create_project",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "projects",
                    "create_project"
                  ]
                }
              },
              "status": "BAD REQUEST",
              "code": 400,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Server",
                  "value": "Werkzeug/3.1.3 Python/3.9.13"
                },
                {
                  "key": "Date",
                  "value": "Sun, 16 Nov 2025 10:19:24 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "47"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Connection",
                  "value": "close"
                }
              ],
              "cookie": [],
              "body": "{\n    \"errors\": {\n        \"project_name\": \"Must be a string\"\n    }\n}"
            },
            {
              "name": "invalid api key",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "key",
                    "value": "",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "\n{\n  \"organization_id\": \"{{organization_id}}\",\n  \"project_name\": \"try1233\",\n  \"default_project\": false,\n  \"limits\": {\n    \"max_active_rooms\": 10,\n    \"max_daily_rooms\": 20,\n    \"max_participants_per_room\": 100,\n    \"max_api_calls_per_day\": 5000,\n    \"extra_config\": {\n      \"custom_feature_1\": true\n    }\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/projects/create_project",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "projects",
                    "create_project"
                  ]
                }
              },
              "status": "UNAUTHORIZED",
              "code": 401,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Server",
                  "value": "Werkzeug/3.1.3 Python/3.9.13"
                },
                {
                  "key": "Date",
                  "value": "Sun, 16 Nov 2025 10:20:05 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "39"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Connection",
                  "value": "close"
                }
              ],
              "cookie": [],
              "body": "{\n    \"error\": \"Invalid or missing api_key\"\n}"
            },
            {
              "name": "invalid secret key",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "\n{\n  \"organization_id\": \"{{organization_id}}\",\n  \"project_name\": \"try1233\",\n  \"default_project\": false,\n  \"limits\": {\n    \"max_active_rooms\": 10,\n    \"max_daily_rooms\": 20,\n    \"max_participants_per_room\": 100,\n    \"max_api_calls_per_day\": 5000,\n    \"extra_config\": {\n      \"custom_feature_1\": true\n    }\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/projects/create_project",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "projects",
                    "create_project"
                  ]
                }
              },
              "status": "UNAUTHORIZED",
              "code": 401,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Server",
                  "value": "Werkzeug/3.1.3 Python/3.9.13"
                },
                {
                  "key": "Date",
                  "value": "Sun, 16 Nov 2025 10:20:47 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "30"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Connection",
                  "value": "close"
                }
              ],
              "cookie": [],
              "body": "{\n    \"error\": \"Invalid signature\"\n}"
            },
            {
              "name": "invalid body",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "\n{\n  \"organization_id\": \"{{organization_id}}\",////\n  \"project_name\": \"try1233\",\n  \"default_project\": false,\n  \"limits\": {\n    \"max_active_rooms\": 10,\n    \"max_daily_rooms\": 20,\n    \"max_participants_per_room\": 100,\n    \"max_api_calls_per_day\": 5000,\n    \"extra_config\": {\n      \"custom_feature_1\": true\n    }\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/projects/create_project",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "projects",
                    "create_project"
                  ]
                }
              },
              "status": "UNAUTHORIZED",
              "code": 401,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Server",
                  "value": "Werkzeug/3.1.3 Python/3.9.13"
                },
                {
                  "key": "Date",
                  "value": "Sun, 16 Nov 2025 10:21:24 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "30"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Connection",
                  "value": "close"
                }
              ],
              "cookie": [],
              "body": "{\n    \"error\": \"Invalid signature\"\n}"
            },
            {
              "name": "invalid data",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "\n{\n  \"organization_id\": \"{{organization_id}}\",\n  \"project_name\": \"sama3\",\n  \"default_project\": false,\n  \"limits\": {\n    \"max_active_rooms\": 10,\n    \"max_daily_rooms\": 20,\n    \"max_participants_per_room\": 100,\n    \"max_api_calls_per_day\": 5000,\n    \"extra_config\": {\n      \"custom_feature_1\": true\n    }\n  }\n  ,\"room_features\": \n                    {\n                        \"General_Room_Settings\": {\n                            \"allow_screen_share\": \"w2e23rw\",\n                            \"allow_webcams\": false,\n                            \"allowed_number_rooms\": 2,\n                            \"allowed_rooms\": false,\n                            \"auto_gen_user_id\": false,\n                            \"mute_on_start\": false,\n                            \"room_duration\": 0,\n                            \"waiting_room_features\": false\n                        },\n                        \"additional_features\": {\n                            \"allowed_external_media_player\": false,\n                            \"display_external_link_features\": false,\n                            \"end_to_end_encryption_features\": false,\n                            \"ingress_features\": false,\n                            \"speach_to_text_and_translate_features\": {\n                                \"is_allow\": false,\n                                \"is_allow_translation\": false\n                            }\n                        },\n                        \"admin_permission\": {\n                            \"admin_only_webcams\": false,\n                            \"allow_raise_hand\": false,\n                            \"allow_view_other_users_list\": false,\n                            \"allow_view_other_webcams\": false\n                        },\n                        \"interactive_tools\": {\n                            \"allow_chat_and_file\": {\n                                \"allow_chat\": false,\n                                \"allow_file_upload\": false\n                            },\n                            \"allow_polls\": false,\n                            \"allow_virtual_bg\": false,\n                            \"allowed_whiteboard\": false,\n                            \"enable_analytics\": false,\n                            \"shared_note_pad_features\": false\n                        },\n                        \"recording_features\": {\n                            \"enable_auto_cloud_recording\": false,\n                            \"is_allow_cloud\": false,\n                            \"is_allow_local\": false,\n                            \"recording_allow\": false\n                        }\n                    }\n                ,\n  \"default_lock_settings\": {\n      \"lock_microphone\": false,\n      \"lock_webcam\": 1222,\n      \"lock_screen_sharing\": true,\n      \"lock_whiteboard\": false,\n      \"lock_shared_notepad\": false,\n      \"lock_chat\": false,\n      \"lock_chat_send_message\": false,\n      \"lock_chat_file_share\": false,\n      \"lock_private_chat\": false\n    }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/projects/create_project",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "projects",
                    "create_project"
                  ]
                }
              },
              "status": "BAD REQUEST",
              "code": 400,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Server",
                  "value": "Werkzeug/3.1.3 Python/3.9.13"
                },
                {
                  "key": "Date",
                  "value": "Sun, 16 Nov 2025 13:03:44 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "118"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Connection",
                  "value": "close"
                }
              ],
              "cookie": [],
              "body": "{\n    \"errors\": {\n        \"lock_webcam\": \"Must be a bool\",\n        \"room_features.General_Room_Settings.allow_screen_share\": \"Must be a bool\"\n    }\n}"
            }
          ]
        }
      ],
      "description": "Contains endpoints for creating, managing, projects and limitition needed fore each project created.\n\n**Reqiurements:**\n\n- **active organization id**\n    \n- **api key of organization**\n    \n- **secret key of organization**\n    \n- **HMAC Signature Generation Script (pre-request):**  \n    This script dynamically generates an **HMAC-SHA256 signature (**Base64-encoded) for each request sent from Postman. The signature is based on the request’s **path/query (GET/DELETE)** or **raw body (POST/PUT/PATCH)** after resolving all Postman variables (`{{var}}`).  \n    The generated signature is then added to the request headers as `hash-signature`.\n    \n\n**How HMAC Signature Generation Script works:**\n\n1\\. Identify message to sign\n\n- GET / DELETE: full API path + query\n    \n- POST / PUT / PATCH: raw request body\n    \n\n2\\. Replace any Postman variables\n\nExample: `{{userId}}`, `{{token}}`, etc.\n\n3\\. Generate Base64-encoded HMAC-SHA256 signature\n\nUsing the secret key\n\n- Note :change secret in the pre-request script with your organization secret key."
    },
    {
      "name": "Recordings",
      "item": [
        {
          "name": "get_record",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "let rawMessage;",
                  "",
                  "if (pm.request.method === \"GET\" || pm.request.method === \"DELETE\") {",
                  "    // Get the full path with query string",
                  "    rawMessage = pm.request.url.getPathWithQuery();",
                  "    ",
                  "    // Resolve all {{variable}} patterns in the URL",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {",
                  "        // Try to get variable from different scopes",
                  "        return pm.collectionVariables.get(varName) || ",
                  "               pm.environment.get(varName) || ",
                  "               pm.globals.get(varName) || ",
                  "               pm.variables.get(varName) || ",
                  "               match; // Keep original if not found",
                  "    });",
                  "} else {",
                  "    // Get raw body",
                  "    rawMessage = pm.request.body.raw;",
                  "    ",
                  "    // Resolve variables in body too",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {",
                  "        return pm.collectionVariables.get(varName) || ",
                  "               pm.environment.get(varName) || ",
                  "               pm.globals.get(varName) || ",
                  "               pm.variables.get(varName) || ",
                  "               match;",
                  "    });",
                  "}",
                  "",
                  "// Normalize: replace CRLF with LF and trim",
                  "rawMessage = rawMessage.replace(/\\r\\n/g, '\\n').trim();",
                  "",
                  "console.log(\"Raw Message to be signed:\", rawMessage);",
                  "console.log(\"Message length:\", rawMessage.length);",
                  "",
                  "const secret = '88bc41de-4caa-4115-b01e-735344ee63d9';",
                  "",
                  "// Generate HMAC SHA256 and encode as Base64",
                  "const hash = CryptoJS.HmacSHA256(rawMessage, secret).toString(CryptoJS.enc.Base64);",
                  "",
                  "pm.request.headers.upsert({ key: \"hash-signature\", value: hash });",
                  "",
                  "console.log(\"Generated HMAC:\", hash);",
                  "console.log(\"Resolved message:\", rawMessage);",
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            }
          ],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          },
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "key",
                "value": "{{key}}",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{V.cloud}}/api/v4/recordings/get_record?room_id={{room_id}}",
              "host": [
                "{{V.cloud}}"
              ],
              "path": [
                "api",
                "v4",
                "recordings",
                "get_record"
              ],
              "query": [
                {
                  "key": "room_id",
                  "value": "{{room_id}}"
                }
              ]
            },
            "description": "Retrieves a specific recording for a given room.\n\n**Purpose:**\nFetch the recording associated with a particular room using its unique room ID.\n\n**Required Parameters:**\n- `room_id` (path or query variable): The unique identifier of the room whose recording is to be retrieved.\n\n**Authentication:**\n- Requires an API key provided in the `key` header.\n- A `hash-signature` header is generated dynamically via the pre-request script using HMAC SHA256.\n\n**Headers:**\n- `key`: Your API key (required)\n- `Content-Type`: application/json\n- `hash-signature`: HMAC signature (auto-generated)\n\n**Expected Responses:**\n- `200 OK`: Returns the recording data for the specified room.\n- `401 Unauthorized`: Returned if the API key is invalid or missing.\n- Other error codes may be returned for invalid parameters or server errors.\n\n**Notes:**\n- Ensure all required variables are set in the active environment before sending the request.\n- The pre-request script automatically resolves variables and generates the required signature."
          },
          "response": [
            {
              "name": "Error 401 Unauthorized",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/recordings/get_record?room_id={{room_id}}",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "recordings",
                    "get_record"
                  ],
                  "query": [
                    {
                      "key": "room_id",
                      "value": "{{room_id}}"
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "key",
                  "value": "{{key}}",
                  "description": "",
                  "enabled": true
                }
              ],
              "cookie": [],
              "body": "{\"error\": \"Invalid signature\"}"
            },
            {
              "name": "get_record",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/recordings/get_record?room_id={{room_id}}",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "recordings",
                    "get_record"
                  ],
                  "query": [
                    {
                      "key": "room_id",
                      "value": "{{room_id}}"
                    }
                  ]
                }
              },
              "status": "UNAUTHORIZED",
              "code": 401,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Date",
                  "value": "Mon, 17 Nov 2025 09:46:45 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "39"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000; includeSubDomains"
                }
              ],
              "cookie": [],
              "body": "{\n    \"error\": \"Invalid or missing api_key\"\n}"
            }
          ]
        },
        {
          "name": "download_recording",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "let rawMessage;",
                  "",
                  "if (pm.request.method === \"GET\" || pm.request.method === \"DELETE\") {",
                  "    // Get the full path with query string",
                  "    rawMessage = pm.request.url.getPathWithQuery();",
                  "    ",
                  "    // Resolve all {{variable}} patterns in the URL",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {",
                  "        // Try to get variable from different scopes",
                  "        return pm.collectionVariables.get(varName) || ",
                  "               pm.environment.get(varName) || ",
                  "               pm.globals.get(varName) || ",
                  "               pm.variables.get(varName) || ",
                  "               match; // Keep original if not found",
                  "    });",
                  "} else {",
                  "    // Get raw body",
                  "    rawMessage = pm.request.body.raw;",
                  "    ",
                  "    // Resolve variables in body too",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {",
                  "        return pm.collectionVariables.get(varName) || ",
                  "               pm.environment.get(varName) || ",
                  "               pm.globals.get(varName) || ",
                  "               pm.variables.get(varName) || ",
                  "               match;",
                  "    });",
                  "}",
                  "",
                  "// Normalize: replace CRLF with LF and trim",
                  "rawMessage = rawMessage.replace(/\\r\\n/g, '\\n').trim();",
                  "",
                  "console.log(\"Raw Message to be signed:\", rawMessage);",
                  "console.log(\"Message length:\", rawMessage.length);",
                  "",
                  "const secret = '2019865e-a36f-4741-b224-26c7218c9673';",
                  "",
                  "// Generate HMAC SHA256 and encode as Base64",
                  "const hash = CryptoJS.HmacSHA256(rawMessage, secret).toString(CryptoJS.enc.Base64);",
                  "",
                  "pm.request.headers.upsert({ key: \"hash-signature\", value: hash });",
                  "",
                  "console.log(\"Generated HMAC:\", hash);",
                  "console.log(\"Resolved message:\", rawMessage);",
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            }
          ],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          },
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "key",
                "value": "{{key}}",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{V.cloud}}/api/v4/recordings/get_recording_link/367a23af-2091-4833-8318-3c642f14888d",
              "host": [
                "{{V.cloud}}"
              ],
              "path": [
                "api",
                "v4",
                "recordings",
                "get_recording_link",
                "367a23af-2091-4833-8318-3c642f14888d"
              ]
            },
            "description": "# Get Recording Download Link\n\nRetrieves a secure download URL for a specific recording file. This endpoint generates a temporary download link that can be used to access and download the recording.\n\n## Request Parameters\n\n### Path Parameters\n\n- **recording_id** (string, required) - The unique identifier of the recording you want to download\n    \n\n## Authentication\n\nThis endpoint requires authentication via the `key` header. Additionally, a valid `hash-signature` header must be included for request verification.\n\n**Required Headers:**\n\n- `key` - Your API key\n    \n- `hash-signature` - HMAC SHA256 base64 signature of the request\n    \n- `Content-Type` - application/json\n    \n\n## Response\n\n### Success Response (200 OK)\n\nReturns a JSON object containing the download URL and recording metadata:\n\n``` json\n{\n  \"download_url\": \"string\",\n  \"filename\": \"string\",\n  \"recording_id\": \"string\",\n  \"message\": \"string\"\n}\n\n ```\n\n**Response Fields:**\n\n- `download_url` - The temporary URL to download the recording file\n    \n- `filename` - The name of the recording file (includes extension)\n    \n- `recording_id` - The unique identifier of the recording\n    \n- `message` - Instructions for downloading the file\n    \n\n### Error Responses\n\n- **401 Unauthorized** - Invalid signature or authentication credentials\n    \n- **404 Not Found** - Recording with the specified ID does not exist\n    \n\n## Usage Notes\n\n- The download URL is temporary and should be used promptly\n    \n- Ensure the `download=true` query parameter is included in the request\n    \n- The HMAC signature must be generated using the correct secret key and request payload\n    \n- Recording files are typically in MP4 format for video recordings\n    \n\n## Example Request\n\n```\nGET {{V.cloud}}/api/v4/recordings/get_recording_link/ad18c214-8c53-4a2d-845c-7ca5758e3c73?download=true\n\n ```"
          },
          "response": [
            {
              "name": "recording not found",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/recordings/get_recording_link/ad18c214-8c53-4a2d-45c-7ca5758e3c73?download=true",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "recordings",
                    "get_recording_link",
                    "ad18c214-8c53-4a2d-45c-7ca5758e3c73"
                  ],
                  "query": [
                    {
                      "key": "download",
                      "value": "true"
                    }
                  ]
                }
              },
              "status": "NOT FOUND",
              "code": 404,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Date",
                  "value": "Thu, 18 Dec 2025 11:57:22 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "32"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000; includeSubDomains"
                }
              ],
              "cookie": [],
              "body": "{\n    \"error\": \"Recording not found\"\n}"
            },
            {
              "name": "get download link",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/recordings/get_recording_link/ad18c214-8c53-4a2d-845c-7ca5758e3c73?download=true",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "recordings",
                    "get_recording_link",
                    "ad18c214-8c53-4a2d-845c-7ca5758e3c73"
                  ],
                  "query": [
                    {
                      "key": "download",
                      "value": "true"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Date",
                  "value": "Thu, 18 Dec 2025 11:58:10 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "295"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000; includeSubDomains"
                }
              ],
              "cookie": [],
              "body": "{\n    \"download_url\": \"http://vcloud-dev.dragonteam.dev/api/v4/recordings/download_recording/ad18c214-8c53-4a2d-845c-7ca5758e3c73\",\n    \"filename\": \"ad18c214-8c53-4a2d-845c-7ca5758e3c73.mp4\",\n    \"message\": \"Click the download_url to download the recording\",\n    \"recording_id\": \"ad18c214-8c53-4a2d-845c-7ca5758e3c73\"\n}"
            },
            {
              "name": "invalid secret key",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/recordings/get_recording_link/ad18c214-8c53-4a2d-845c-7ca5758e3c73",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "recordings",
                    "get_recording_link",
                    "ad18c214-8c53-4a2d-845c-7ca5758e3c73"
                  ]
                }
              },
              "status": "UNAUTHORIZED",
              "code": 401,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Date",
                  "value": "Thu, 18 Dec 2025 12:01:00 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "30"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000; includeSubDomains"
                }
              ],
              "cookie": [],
              "body": "{\n    \"error\": \"Invalid signature\"\n}"
            }
          ]
        },
        {
          "name": "get_project recording",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "let rawMessage;",
                  "",
                  "if (pm.request.method === \"GET\" || pm.request.method === \"DELETE\") {",
                  "    // Get the full path with query string",
                  "    rawMessage = pm.request.url.getPathWithQuery();",
                  "    ",
                  "    // Resolve all {{variable}} patterns in the URL",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {",
                  "        // Try to get variable from different scopes",
                  "        return pm.collectionVariables.get(varName) || ",
                  "               pm.environment.get(varName) || ",
                  "               pm.globals.get(varName) || ",
                  "               pm.variables.get(varName) || ",
                  "               match; // Keep original if not found",
                  "    });",
                  "} else {",
                  "    // Get raw body",
                  "    rawMessage = pm.request.body.raw;",
                  "    z",
                  "    // Resolve variables in body too",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {",
                  "        return pm.collectionVariables.get(varName) || ",
                  "               pm.environment.get(varName) || ",
                  "               pm.globals.get(varName) || ",
                  "               pm.variables.get(varName) || ",
                  "               match;",
                  "    });",
                  "}",
                  "",
                  "// Normalize: replace CRLF with LF and trim",
                  "rawMessage = rawMessage.replace(/\\r\\n/g, '\\n').trim();",
                  "",
                  "console.log(\"Raw Message to be signed:\", rawMessage);",
                  "console.log(\"Message length:\", rawMessage.length);",
                  "",
                  "const secret = '2019865e-a36f-4741-b224-26c7218c9673';",
                  "// Generate HMAC SHA256 and encode as Base64",
                  "const hash = CryptoJS.HmacSHA256(rawMessage, secret).toString(CryptoJS.enc.Base64);",
                  "",
                  "pm.request.headers.upsert({ key: \"hash-signature\", value: hash });",
                  "",
                  "console.log(\"Generated HMAC:\", hash);",
                  "console.log(\"Resolved message:\", rawMessage);",
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            }
          ],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          },
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "key",
                "value": "{{key}}",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{V.cloud}}/api/v4/recordings/get_records?project_id=0f0ef380-a34b-44a5-b291-0f1dd81cbea8",
              "host": [
                "{{V.cloud}}"
              ],
              "path": [
                "api",
                "v4",
                "recordings",
                "get_records"
              ],
              "query": [
                {
                  "key": "project_id",
                  "value": "0f0ef380-a34b-44a5-b291-0f1dd81cbea8"
                }
              ]
            },
            "description": "# Get Project Recordings\n\nThis endpoint retrieves a list of recordings associated with a specific project. It returns comprehensive information about each recording, including metadata about the project and room where the recording was created.\n\n## Required Parameters\n\n- **project_id** (query parameter): The unique identifier of the project for which you want to retrieve recordings.\n\n## Response\n\nThe endpoint returns a JSON object containing:\n\n- **count**: The total number of recordings found for the specified project\n- **items**: An array of recording objects, each containing:\n  - **id**: Unique identifier for the recording\n  - **created_at**: Timestamp when the recording was created (ISO 8601 format)\n  - **url**: Direct URL to access/download the recording\n  - **project**: Object containing project details\n    - **project_id**: The project's unique identifier\n    - **project_name**: The name of the project\n  - **room**: Object containing room details\n    - **room_id**: The room's unique identifier\n    - **room_name**: The name of the room where the recording took place\n\n## Status Codes\n\n- **200 OK**: Successfully retrieved the list of recordings for the specified project\n\n## Example Response\n\n```json\n{\n  \"count\": 3,\n  \"items\": [\n    {\n      \"created_at\": \"2025-11-19T12:08:26\",\n      \"id\": \"8116e47e-2fd8-4cc4-8a89-f9b4671c5fdf\",\n      \"project\": {\n        \"project_id\": \"0c308f8d-2ca8-4384-9a06-ad9ca581de2b\",\n        \"project_name\": \"Project\"\n      },\n      \"room\": {\n        \"room_id\": \"d0f0b3c9-2fc0-4567-a0e3-c87a09747a34\",\n        \"room_name\": \"Test room\"\n      },\n      \"url\": \"https://rec.vconnct.us/...\"\n    }\n  ]\n}\n```"
          },
          "response": [
            {
              "name": "invalid secret key",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/recordings/get_records?project_id=0753e658-2753-4d11-8b0e-399714281749",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "recordings",
                    "get_records"
                  ],
                  "query": [
                    {
                      "key": "project_id",
                      "value": "0753e658-2753-4d11-8b0e-399714281749"
                    }
                  ]
                }
              },
              "status": "UNAUTHORIZED",
              "code": 401,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Date",
                  "value": "Thu, 18 Dec 2025 12:14:02 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "30"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000; includeSubDomains"
                }
              ],
              "cookie": [],
              "body": "{\n    \"error\": \"Invalid signature\"\n}"
            },
            {
              "name": "invalid project",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/recordings/get_records?project_id=0753e658-2753-4d11-8b0e-399714281749",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "recordings",
                    "get_records"
                  ],
                  "query": [
                    {
                      "key": "project_id",
                      "value": "0753e658-2753-4d11-8b0e-399714281749"
                    }
                  ]
                }
              },
              "status": "NOT FOUND",
              "code": 404,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Date",
                  "value": "Thu, 18 Dec 2025 12:15:10 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "30"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000; includeSubDomains"
                }
              ],
              "cookie": [],
              "body": "{\n    \"error\": \"Project not found\"\n}"
            },
            {
              "name": "get_project recording",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/recordings/get_records?project_id=0c308f8d-2ca8-4384-9a06-ad9ca581de2b",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "recordings",
                    "get_records"
                  ],
                  "query": [
                    {
                      "key": "project_id",
                      "value": "0c308f8d-2ca8-4384-9a06-ad9ca581de2b"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Date",
                  "value": "Thu, 18 Dec 2025 12:21:44 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "1021"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                },
                {
                  "key": "Access-Control-Allow-Origin",
                  "value": "*"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000; includeSubDomains"
                }
              ],
              "cookie": [],
              "body": "{\n    \"count\": 3,\n    \"items\": [\n        {\n            \"created_at\": \"2025-11-19T12:08:26\",\n            \"id\": \"8116e47e-2fd8-4cc4-8a89-f9b4671c5fdf\",\n            \"project\": {\n                \"project_id\": \"0c308f8d-2ca8-4384-9a06-ad9ca581de2b\",\n                \"project_name\": \"Project\"\n            },\n            \"room\": {\n                \"room_id\": \"d0f0b3c9-2fc0-4567-a0e3-c87a09747a34\",\n                \"room_name\": \"Test room\"\n            },\n            \"url\": \"https://rec.vconnct.us/RM_mknUh4twYsXy/RM_mknUh4twYsXy-1763554084044.mp4\"\n        },\n        {\n            \"created_at\": \"2025-11-19T10:45:19\",\n            \"id\": \"72723808-fdba-40b7-a738-4b90b990916b\",\n            \"project\": {\n                \"project_id\": \"0c308f8d-2ca8-4384-9a06-ad9ca581de2b\",\n                \"project_name\": \"Project\"\n            },\n            \"room\": {\n                \"room_id\": \"ab9ddb71-4e7a-4a20-b067-ed3db45d0bbd\",\n                \"room_name\": \"Test room\"\n            },\n            \"url\": \"https://rec.vconnct.us/RM_wu2gZ8jzrWcx/RM_wu2gZ8jzrWcx-1763549106766.mp4\"\n        },\n        {\n            \"created_at\": \"2025-11-18T21:56:31\",\n            \"id\": \"c4595a52-ab7d-4a8b-8b2a-27e62dcb05f4\",\n            \"project\": {\n                \"project_id\": \"0c308f8d-2ca8-4384-9a06-ad9ca581de2b\",\n                \"project_name\": \"Project\"\n            },\n            \"room\": {\n                \"room_id\": \"b9d5e3c5-411b-4af2-b43e-d7acb919fb7b\",\n                \"room_name\": \"Test room\"\n            },\n            \"url\": \"https://rec.vconnct.us/RM_y9tjxZtGGHSW/RM_y9tjxZtGGHSW-1763502981469.mp4\"\n        }\n    ]\n}"
            }
          ]
        }
      ],
      "description": "Contains endpoints for accessing and managing room recordings. Use these endpoints to retrieve recorded sessions for audio or video rooms.\n\n**Reqiurements:**\n\n- **active project id**\n    \n- **api key of project**\n    \n- **secret key of project**\n    \n- **HMAC Signature Generation Script (pre-request):**  \n    This script dynamically generates an **HMAC-SHA256 signature(base64 encoded)** for each request sent from Postman. The signature is based on the request’s **path/query (GET/DELETE)** or **raw body (POST/PUT/PATCH)** after resolving all Postman variables (`{{var}}`).  \n    The generated signature is then added to the request headers as `hash-signature`.\n    \n\n**How HMAC Signature Generation Script works:**\n\n1\\. Identify message to sign\n\n- GET / DELETE: full API path + query\n    \n- POST / PUT / PATCH: raw request body\n    \n\n2\\. Replace any Postman variables\n\nExample: `{{userId}}`, `{{token}}`, etc.\n\n3\\. Generate Base64-encoded HMAC-SHA256 signature\n\nUsing the secret key\n\n- Note :change secret in the pre-request script with your project secret key."
    },
    {
      "name": "Analytics",
      "item": [
        {
          "name": "get_analytics",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "let rawMessage;",
                  "",
                  "if (pm.request.method === \"GET\" || pm.request.method === \"DELETE\") {",
                  "    // Get the full path with query string",
                  "    rawMessage = pm.request.url.getPathWithQuery();",
                  "    ",
                  "    // Resolve all {{variable}} patterns in the URL",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {",
                  "        // Try to get variable from different scopes",
                  "        return pm.collectionVariables.get(varName) || ",
                  "               pm.environment.get(varName) || ",
                  "               pm.globals.get(varName) || ",
                  "               pm.variables.get(varName) || ",
                  "               match; // Keep original if not found",
                  "    });",
                  "} else {",
                  "    // Get raw body",
                  "    rawMessage = pm.request.body.raw;",
                  "    ",
                  "    // Resolve variables in body too",
                  "    rawMessage = rawMessage.replace(/\\{\\{(\\w+)\\}\\}/g, (match, varName) => {",
                  "        return pm.collectionVariables.get(varName) || ",
                  "               pm.environment.get(varName) || ",
                  "               pm.globals.get(varName) || ",
                  "               pm.variables.get(varName) || ",
                  "               match;",
                  "    });",
                  "}",
                  "",
                  "// Normalize: replace CRLF with LF and trim",
                  "rawMessage = rawMessage.replace(/\\r\\n/g, '\\n').trim();",
                  "",
                  "",
                  "const secret = '88bc41de-4caa-4115-b01e-735344ee63d9';",
                  "",
                  "// Generate HMAC SHA256 and encode as Base64",
                  "const hash = CryptoJS.HmacSHA256(rawMessage, secret).toString(CryptoJS.enc.Base64);",
                  "",
                  "pm.request.headers.upsert({ key: \"hash-signature\", value: hash });",
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            },
            {
              "listen": "test",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript",
                "packages": {},
                "requests": {}
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "key",
                "value": "{{key}}",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{V.cloud}}/api/v3/analytics/get_analytics?room_id={{room_id}}",
              "host": [
                "{{V.cloud}}"
              ],
              "path": [
                "api",
                "v3",
                "analytics",
                "get_analytics"
              ],
              "query": [
                {
                  "key": "room_id",
                  "value": "{{room_id}}"
                }
              ]
            },
            "description": "**Purpose:**  \nRetrieves analytics data for a specific room in the V.cloud platform.\n\n**Endpoint:**  \n`GET {{V.cloud}}/api/v4/analytics/get_analytics?room_id={{room_id}}`\n\n**Required Parameters:**\n\n- `room_id` (query parameter): The unique identifier of the room for which analytics are requested. This must be provided as a variable or directly in the query string.\n    \n\n**Authentication:**\n\n- Requires a valid API key provided in the `key` header (`{{key}}`).\n    \n- The request uses an HMAC SHA256 signature for additional security. The signature is generated in the pre-request script and added to the `hash-signature` header.\n    \n\n**Pre-request Script:**\n\n- Dynamically resolves variables in the URL.\n    \n- Generates an HMAC SHA256 hash of the resolved URL using a secret, then encodes it as Base64 and adds it to the `hash-signature` header.\n    \n\n**Expected Responses:**\n\n- **200 OK:** Returns analytics data for the specified room. Example response:\n    \n    ``` json\n    {\n      \"name\": \"get_analytics\",\n      \"status\": \"OK\",\n      ...\n    }\n    \n     ```\n    \n- **401 Unauthorized:** Returned if authentication fails or the signature is invalid.\n    \n\n**Notes:**\n\n- Ensure all required variables (`V.cloud`, `room_id`, `key`) are set in the environment or collection variables before sending the request.\n    \n- The endpoint does not require a request body."
          },
          "response": [
            {
              "name": "get_analytics",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "{{V.cloud}}/api/v4/analytics/get_analytics",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "analytics",
                    "get_analytics"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Server",
                  "value": "Werkzeug/3.1.3 Python/3.12.3"
                },
                {
                  "key": "Date",
                  "value": "Tue, 24 Dec 2024 14:45:46 GMT"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "key": "Content-Length",
                  "value": "24306"
                },
                {
                  "key": "Connection",
                  "value": "close"
                }
              ],
              "cookie": [],
              "body": "{\n    \"data\": {\n        \"data\": {\n            \"room\": {\n                \"enabled_e2ee\": false,\n                \"events\": [\n                    {\n                        \"name\": \"breakout_room\",\n                        \"total\": 0,\n                        \"values\": []\n                    },\n                    {\n                        \"name\": \"speech_service_status\",\n                        \"total\": 0,\n                        \"values\": []\n                    },\n                    {\n                        \"name\": \"external_media_player_status\",\n                        \"total\": 0,\n                        \"values\": []\n                    },\n                    {\n                        \"name\": \"whiteboard_files\",\n                        \"total\": 0,\n                        \"values\": []\n                    },\n                    {\n                        \"name\": \"poll_added\",\n                        \"total\": 0,\n                        \"values\": []\n                    },\n                    {\n                        \"name\": \"poll_ended\",\n                        \"total\": 0,\n                        \"values\": []\n                    },\n                    {\n                        \"name\": \"rtmp_status\",\n                        \"total\": 0,\n                        \"values\": []\n                    },\n                    {\n                        \"name\": \"external_display_link_status\",\n                        \"total\": 0,\n                        \"values\": []\n                    },\n                    {\n                        \"name\": \"speech_service_total_usage\",\n                        \"total\": 0,\n                        \"values\": []\n                    },\n                    {\n                        \"name\": \"recording_status\",\n                        \"total\": 30,\n                        \"values\": [\n                            {\n                                \"time\": \"1735050578648\",\n                                \"value\": \"ANALYTICS_STATUS_ENDED\"\n                            },\n                            {\n                                \"time\": \"1735050594486\",\n                                \"value\": \"ANALYTICS_STATUS_STARTED:node_01\"\n                            },\n                            {\n                                \"time\": \"1735051153776\",\n                                \"value\": \"ANALYTICS_STATUS_STARTED:node_01\"\n                            },\n                            {\n                                \"time\": \"1735050304189\",\n                                \"value\": \"ANALYTICS_STATUS_STARTED:node_01\"\n                            },\n                            {\n                                \"time\": \"1735050704272\",\n                                \"value\": \"ANALYTICS_STATUS_STARTED:node_01\"\n                            },\n                            {\n                                \"time\": \"1735050844100\",\n                                \"value\": \"ANALYTICS_STATUS_ENDED\"\n                            },\n                            {\n                                \"time\": \"1735050874709\",\n                                \"value\": \"ANALYTICS_STATUS_ENDED\"\n                            },\n                            {\n                                \"time\": \"1735050965375\",\n                                \"value\": \"ANALYTICS_STATUS_ENDED\"\n                            },\n                            {\n                                \"time\": \"1735051309592\",\n                                \"value\": \"ANALYTICS_STATUS_ENDED\"\n                            },\n                            {\n                                \"time\": \"1735050422054\",\n                                \"value\": \"ANALYTICS_STATUS_ENDED\"\n                            },\n                            {\n                                \"time\": \"1735051098733\",\n                                \"value\": \"ANALYTICS_STATUS_STARTED:node_01\"\n                            },\n                            {\n                                \"time\": \"1735051140613\",\n                                \"value\": \"ANALYTICS_STATUS_ENDED\"\n                            },\n                            {\n                                \"time\": \"1735050922054\",\n                                \"value\": \"ANALYTICS_STATUS_ENDED\"\n                            },\n                            {\n                                \"time\": \"1735051269719\",\n                                \"value\": \"ANALYTICS_STATUS_STARTED:node_01\"\n                            },\n                            {\n                                \"time\": \"1735050194976\",\n                                \"value\": \"ANALYTICS_STATUS_ENDED\"\n                            },\n                            {\n                                \"time\": \"1735050384981\",\n                                \"value\": \"ANALYTICS_STATUS_STARTED:node_01\"\n                            },\n                            {\n                                \"time\": \"1735050517694\",\n                                \"value\": \"ANALYTICS_STATUS_ENDED\"\n                            },\n                            {\n                                \"time\": \"1735050791209\",\n                                \"value\": \"ANALYTICS_STATUS_STARTED:node_01\"\n                            },\n                            {\n                                \"time\": \"1735050859192\",\n                                \"value\": \"ANALYTICS_STATUS_STARTED:node_01\"\n                            },\n                            {\n                                \"time\": \"1735050178104\",\n                                \"value\": \"ANALYTICS_STATUS_STARTED:node_01\"\n                            },\n                            {\n                                \"time\": \"1735050371745\",\n                                \"value\": \"ANALYTICS_STATUS_ENDED\"\n                            },\n                            {\n                                \"time\": \"1735050534488\",\n                                \"value\": \"ANALYTICS_STATUS_STARTED:node_01\"\n                            },\n                            {\n                                \"time\": \"1735050937244\",\n                                \"value\": \"ANALYTICS_STATUS_STARTED:node_01\"\n                            },\n                            {\n                                \"time\": \"1735051255406\",\n                                \"value\": \"ANALYTICS_STATUS_ENDED\"\n                            },\n                            {\n                                \"time\": \"1735051418690\",\n                                \"value\": \"ANALYTICS_STATUS_STARTED:node_01\"\n                            },\n                            {\n                                \"time\": \"1735050466248\",\n                                \"value\": \"ANALYTICS_STATUS_STARTED:node_01\"\n                            },\n                            {\n                                \"time\": \"1735050688052\",\n                                \"value\": \"ANALYTICS_STATUS_ENDED\"\n                            },\n                            {\n                                \"time\": \"1735050736890\",\n                                \"value\": \"ANALYTICS_STATUS_ENDED\"\n                            },\n                            {\n                                \"time\": \"1735050891327\",\n                                \"value\": \"ANALYTICS_STATUS_STARTED:node_01\"\n                            },\n                            {\n                                \"time\": \"1735051497510\",\n                                \"value\": \"ANALYTICS_STATUS_ENDED\"\n                            }\n                        ]\n                    },\n                    {\n                        \"name\": \"ingress_created\",\n                        \"total\": 0,\n                        \"values\": []\n                    },\n                    {\n                        \"name\": \"etherpad_status\",\n                        \"total\": 0,\n                        \"values\": []\n                    }\n                ],\n                \"room_creation\": \"1735050149\",\n                \"room_duration\": \"1347\",\n                \"room_ended\": \"1735051496\",\n                \"room_id\": \"56c58fd3-7743-4af7-b883-641215ee6dc9\",\n                \"room_title\": \"Test room\",\n                \"room_total_users\": \"2\"\n            },\n            \"users\": [\n                {\n                    \"events\": [\n                        {\n                            \"name\": \"mic_status\",\n                            \"total\": 2,\n                            \"values\": [\n                                {\n                                    \"time\": \"1735050164907\",\n                                    \"value\": \"ANALYTICS_STATUS_STARTED\"\n                                },\n                                {\n                                    \"time\": \"1735051496406\",\n                                    \"value\": \"ANALYTICS_STATUS_ENDED\"\n                                }\n                            ]\n                        },\n                        {\n                            \"name\": \"talked_duration\",\n                            \"total\": 274570,\n                            \"values\": []\n                        },\n                        {\n                            \"name\": \"webcam_status\",\n                            \"total\": 0,\n                            \"values\": []\n                        },\n                        {\n                            \"name\": \"whiteboard_annotated\",\n                            \"total\": 0,\n                            \"values\": []\n                        },\n                        {\n                            \"name\": \"joined\",\n                            \"total\": 1,\n                            \"values\": [\n                                {\n                                    \"time\": \"1735050157807\",\n                                    \"value\": \"1735050157000\"\n                                }\n                            ]\n                        },\n                        {\n                            \"name\": \"public_chat\",\n                            \"total\": 0,\n                            \"values\": []\n                        },\n                        {\n                            \"name\": \"speech_services_usage\",\n                            \"total\": 0,\n                            \"values\": []\n                        },\n                        {\n                            \"name\": \"connection_quality\",\n                            \"total\": 3,\n                            \"values\": [\n                                {\n                                    \"time\": \"1735050799134\",\n                                    \"value\": \"excellent\"\n                                },\n                                {\n                                    \"time\": \"1735050784133\",\n                                    \"value\": \"lost\"\n                                },\n                                {\n                                    \"time\": \"1735050789484\",\n                                    \"value\": \"good\"\n                                }\n                            ]\n                        },\n                        {\n                            \"name\": \"talked\",\n                            \"total\": 273,\n                            \"values\": []\n                        },\n                        {\n                            \"name\": \"raise_hand\",\n                            \"total\": 0,\n                            \"values\": []\n                        },\n                        {\n                            \"name\": \"left\",\n                            \"total\": 1,\n                            \"values\": [\n                                {\n                                    \"time\": \"1735051496422\",\n                                    \"value\": \"1735051496000\"\n                                }\n                            ]\n                        },\n                        {\n                            \"name\": \"chat_files\",\n                            \"total\": 0,\n                            \"values\": []\n                        },\n                        {\n                            \"name\": \"private_chat\",\n                            \"total\": 0,\n                            \"values\": []\n                        },\n                        {\n                            \"name\": \"whiteboard_files\",\n                            \"total\": 0,\n                            \"values\": []\n                        },\n                        {\n                            \"name\": \"screen_share_status\",\n                            \"total\": 0,\n                            \"values\": []\n                        },\n                        {\n                            \"name\": \"voted_poll\",\n                            \"total\": 0,\n                            \"values\": []\n                        },\n                        {\n                            \"name\": \"speech_services_status\",\n                            \"total\": 0,\n                            \"values\": []\n                        },\n                        {\n                            \"name\": \"interface_visibility\",\n                            \"total\": 60,\n                            \"values\": [\n                                {\n                                    \"time\": \"1735050162493\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735050170430\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735050683429\",\n                                    \"value\": \"visible\"\n                                },\n                                {\n                                    \"time\": \"1735051306980\",\n                                    \"value\": \"visible\"\n                                },\n                                {\n                                    \"time\": \"1735050368711\",\n                                    \"value\": \"visible\"\n                                },\n                                {\n                                    \"time\": \"1735050883101\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735051137546\",\n                                    \"value\": \"visible\"\n                                },\n                                {\n                                    \"time\": \"1735050188853\",\n                                    \"value\": \"visible\"\n                                },\n                                {\n                                    \"time\": \"1735050852308\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735050970005\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735051412475\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735050216159\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735050305299\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735050414770\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735050448924\",\n                                    \"value\": \"visible\"\n                                },\n                                {\n                                    \"time\": \"1735050929414\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735050575473\",\n                                    \"value\": \"visible\"\n                                },\n                                {\n                                    \"time\": \"1735050290280\",\n                                    \"value\": \"visible\"\n                                },\n                                {\n                                    \"time\": \"1735050398570\",\n                                    \"value\": \"visible\"\n                                },\n                                {\n                                    \"time\": \"1735050745762\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735051311241\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735051322073\",\n                                    \"value\": \"visible\"\n                                },\n                                {\n                                    \"time\": \"1735051339295\",\n                                    \"value\": \"visible\"\n                                },\n                                {\n                                    \"time\": \"1735050215544\",\n                                    \"value\": \"visible\"\n                                },\n                                {\n                                    \"time\": \"1735050414835\",\n                                    \"value\": \"visible\"\n                                },\n                                {\n                                    \"time\": \"1735050416832\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735050698666\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735051093554\",\n                                    \"value\": \"visible\"\n                                },\n                                {\n                                    \"time\": \"1735050411773\",\n                                    \"value\": \"visible\"\n                                },\n                                {\n                                    \"time\": \"1735050527693\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735050841094\",\n                                    \"value\": \"visible\"\n                                },\n                                {\n                                    \"time\": \"1735051265493\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735051087113\",\n                                    \"value\": \"visible\"\n                                },\n                                {\n                                    \"time\": \"1735051094179\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735051252196\",\n                                    \"value\": \"visible\"\n                                },\n                                {\n                                    \"time\": \"1735051421598\",\n                                    \"value\": \"visible\"\n                                },\n                                {\n                                    \"time\": \"1735051425053\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735051437528\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735050422254\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735050872795\",\n                                    \"value\": \"visible\"\n                                },\n                                {\n                                    \"time\": \"1735051145489\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735051341289\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735051435530\",\n                                    \"value\": \"visible\"\n                                },\n                                {\n                                    \"time\": \"1735050401418\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735050458655\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735050513107\",\n                                    \"value\": \"visible\"\n                                },\n                                {\n                                    \"time\": \"1735050195746\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735050417554\",\n                                    \"value\": \"visible\"\n                                },\n                                {\n                                    \"time\": \"1735050753334\",\n                                    \"value\": \"visible\"\n                                },\n                                {\n                                    \"time\": \"1735051092020\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735051391288\",\n                                    \"value\": \"visible\"\n                                },\n                                {\n                                    \"time\": \"1735050586301\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735050732913\",\n                                    \"value\": \"visible\"\n                                },\n                                {\n                                    \"time\": \"1735050783057\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735050962751\",\n                                    \"value\": \"visible\"\n                                },\n                                {\n                                    \"time\": \"1735050162622\",\n                                    \"value\": \"visible\"\n                                },\n                                {\n                                    \"time\": \"1735050388279\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735050918956\",\n                                    \"value\": \"visible\"\n                                },\n                                {\n                                    \"time\": \"1735051336052\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735051493209\",\n                                    \"value\": \"visible\"\n                                }\n                            ]\n                        }\n                    ],\n                    \"is_admin\": true,\n                    \"name\": \"hisham\",\n                    \"user_id\": \"215c1eff-7d74-4d3c-a62a-35a36ef0f916\"\n                },\n                {\n                    \"events\": [\n                        {\n                            \"name\": \"mic_status\",\n                            \"total\": 0,\n                            \"values\": []\n                        },\n                        {\n                            \"name\": \"talked_duration\",\n                            \"total\": 0,\n                            \"values\": []\n                        },\n                        {\n                            \"name\": \"webcam_status\",\n                            \"total\": 0,\n                            \"values\": []\n                        },\n                        {\n                            \"name\": \"whiteboard_annotated\",\n                            \"total\": 0,\n                            \"values\": []\n                        },\n                        {\n                            \"name\": \"joined\",\n                            \"total\": 15,\n                            \"values\": [\n                                {\n                                    \"time\": \"1735051095623\",\n                                    \"value\": \"1735051095000\"\n                                },\n                                {\n                                    \"time\": \"1735051266611\",\n                                    \"value\": \"1735051266000\"\n                                },\n                                {\n                                    \"time\": \"1735050301076\",\n                                    \"value\": \"1735050301000\"\n                                },\n                                {\n                                    \"time\": \"1735050381866\",\n                                    \"value\": \"1735050381000\"\n                                },\n                                {\n                                    \"time\": \"1735051415564\",\n                                    \"value\": \"1735051415000\"\n                                },\n                                {\n                                    \"time\": \"1735050174951\",\n                                    \"value\": \"1735050174000\"\n                                },\n                                {\n                                    \"time\": \"1735050856110\",\n                                    \"value\": \"1735050856000\"\n                                },\n                                {\n                                    \"time\": \"1735050701092\",\n                                    \"value\": \"1735050701000\"\n                                },\n                                {\n                                    \"time\": \"1735050888235\",\n                                    \"value\": \"1735050888000\"\n                                },\n                                {\n                                    \"time\": \"1735050934116\",\n                                    \"value\": \"1735050934000\"\n                                },\n                                {\n                                    \"time\": \"1735051150687\",\n                                    \"value\": \"1735051150000\"\n                                },\n                                {\n                                    \"time\": \"1735050463126\",\n                                    \"value\": \"1735050463000\"\n                                },\n                                {\n                                    \"time\": \"1735050531390\",\n                                    \"value\": \"1735050531000\"\n                                },\n                                {\n                                    \"time\": \"1735050591371\",\n                                    \"value\": \"1735050591000\"\n                                },\n                                {\n                                    \"time\": \"1735050788107\",\n                                    \"value\": \"1735050788000\"\n                                }\n                            ]\n                        },\n                        {\n                            \"name\": \"public_chat\",\n                            \"total\": 0,\n                            \"values\": []\n                        },\n                        {\n                            \"name\": \"speech_services_usage\",\n                            \"total\": 0,\n                            \"values\": []\n                        },\n                        {\n                            \"name\": \"connection_quality\",\n                            \"total\": 5,\n                            \"values\": [\n                                {\n                                    \"time\": \"1735051419041\",\n                                    \"value\": \"excellent\"\n                                },\n                                {\n                                    \"time\": \"1735050179041\",\n                                    \"value\": \"excellent\"\n                                },\n                                {\n                                    \"time\": \"1735050939040\",\n                                    \"value\": \"excellent\"\n                                },\n                                {\n                                    \"time\": \"1735051099041\",\n                                    \"value\": \"excellent\"\n                                },\n                                {\n                                    \"time\": \"1735051154040\",\n                                    \"value\": \"excellent\"\n                                }\n                            ]\n                        },\n                        {\n                            \"name\": \"talked\",\n                            \"total\": 0,\n                            \"values\": []\n                        },\n                        {\n                            \"name\": \"raise_hand\",\n                            \"total\": 0,\n                            \"values\": []\n                        },\n                        {\n                            \"name\": \"left\",\n                            \"total\": 15,\n                            \"values\": [\n                                {\n                                    \"time\": \"1735050965366\",\n                                    \"value\": \"1735050965000\"\n                                },\n                                {\n                                    \"time\": \"1735051140590\",\n                                    \"value\": \"1735051140000\"\n                                },\n                                {\n                                    \"time\": \"1735051309570\",\n                                    \"value\": \"1735051309000\"\n                                },\n                                {\n                                    \"time\": \"1735050422027\",\n                                    \"value\": \"1735050422000\"\n                                },\n                                {\n                                    \"time\": \"1735050738839\",\n                                    \"value\": \"1735050736000\"\n                                },\n                                {\n                                    \"time\": \"1735050194954\",\n                                    \"value\": \"1735050194000\"\n                                },\n                                {\n                                    \"time\": \"1735050517668\",\n                                    \"value\": \"1735050517000\"\n                                },\n                                {\n                                    \"time\": \"1735050578618\",\n                                    \"value\": \"1735050578000\"\n                                },\n                                {\n                                    \"time\": \"1735050922046\",\n                                    \"value\": \"1735050922000\"\n                                },\n                                {\n                                    \"time\": \"1735050844072\",\n                                    \"value\": \"1735050844000\"\n                                },\n                                {\n                                    \"time\": \"1735050874678\",\n                                    \"value\": \"1735050874000\"\n                                },\n                                {\n                                    \"time\": \"1735051255371\",\n                                    \"value\": \"1735051255000\"\n                                },\n                                {\n                                    \"time\": \"1735051496436\",\n                                    \"value\": \"1735051496000\"\n                                },\n                                {\n                                    \"time\": \"1735050374838\",\n                                    \"value\": \"1735050371000\"\n                                },\n                                {\n                                    \"time\": \"1735050688019\",\n                                    \"value\": \"1735050688000\"\n                                }\n                            ]\n                        },\n                        {\n                            \"name\": \"chat_files\",\n                            \"total\": 0,\n                            \"values\": []\n                        },\n                        {\n                            \"name\": \"private_chat\",\n                            \"total\": 0,\n                            \"values\": []\n                        },\n                        {\n                            \"name\": \"whiteboard_files\",\n                            \"total\": 0,\n                            \"values\": []\n                        },\n                        {\n                            \"name\": \"screen_share_status\",\n                            \"total\": 0,\n                            \"values\": []\n                        },\n                        {\n                            \"name\": \"voted_poll\",\n                            \"total\": 0,\n                            \"values\": []\n                        },\n                        {\n                            \"name\": \"speech_services_status\",\n                            \"total\": 0,\n                            \"values\": []\n                        },\n                        {\n                            \"name\": \"interface_visibility\",\n                            \"total\": 14,\n                            \"values\": [\n                                {\n                                    \"time\": \"1735051140580\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735050736863\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735050922040\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735050874677\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735050965369\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735050371725\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735050578617\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735050688029\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735050844065\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735051255375\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735050422018\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735050517665\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735050194943\",\n                                    \"value\": \"hidden\"\n                                },\n                                {\n                                    \"time\": \"1735051309564\",\n                                    \"value\": \"hidden\"\n                                }\n                            ]\n                        }\n                    ],\n                    \"is_admin\": true,\n                    \"name\": \"\",\n                    \"user_id\": \"RECORDER_BOT\"\n                }\n            ]\n        },\n        \"room_id\": \"56c58fd3-7743-4af7-b883-641215ee6dc9\"\n    },\n    \"status\": true\n}"
            },
            {
              "name": "Error 401 Unauthorized",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "key",
                    "value": "{{key}}"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": ""
                },
                "url": {
                  "raw": "{{V.cloud}}/api/v4/analytics/get_analytics?room_id={{room_id}}",
                  "host": [
                    "{{V.cloud}}"
                  ],
                  "path": [
                    "api",
                    "v4",
                    "analytics",
                    "get_analytics"
                  ],
                  "query": [
                    {
                      "key": "room_id",
                      "value": "{{room_id}}"
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "key",
                  "value": "{{key}}",
                  "description": "",
                  "enabled": true
                }
              ],
              "cookie": [],
              "body": "{\"error\": \"Invalid signature\"}"
            }
          ]
        }
      ],
      "description": "Contains endpoints for retrieving analytics and usage statistics related to rooms. Use these endpoints to get insights and metrics for your rooms.\n\n**Reqiurements:**\n\n- **active project id**\n    \n- **api key of project**\n    \n- **secret key of project**\n    \n- **HMAC Signature Generation Script (pre-request):**  \n    This script dynamically generates an **HMAC-SHA256 signature(**Base64-encoded) for each request sent from Postman. The signature is based on the request’s **path/query (GET/DELETE)** or **raw body (POST/PUT/PATCH)** after resolving all Postman variables (`{{var}}`).  \n    The generated signature is then added to the request headers as `hash-signature`.\n    \n\n**How HMAC Signature Generation Script works:**\n\n1\\. Identify message to sign\n\n- GET / DELETE: full API path + query\n    \n- POST / PUT / PATCH: raw request body\n    \n\n2\\. Replace any Postman variables\n\nExample: `{{userId}}`, `{{token}}`, etc.\n\n3\\. Generate Base64-encoded HMAC-SHA256 signature\n\nUsing the secret key\n\n- Note :change secret in the pre-request script with your project secret key."
    }
  ]
}